GitHub - tufstraka/Jaba: Decentralized voting platform built on ICP (original) (raw)

Overview 🚀

This is a full-stack decentralized voting platform built with cutting-edge web technologies, leveraging the Internet Computer Protocol (ICP) for secure and transparent voting mechanisms.

Technology Stack 💻

Prerequisites 📋

Before you begin, ensure you have the following installed:

Project Structure 🗂️

voting-platform/
│
├── jaba_backend/     # Backend smart contract code
│   └── src/
│       └── ... 
│
└── jaba_frontend/    # Next.js frontend application
    └── src/
        └── ...

Local Development Setup 🔧

Backend Deployment 🖥️

  1. Navigate to the backend directory:
  2. Install dependencies:
  3. Start the local Internet Computer replica:
  4. Deploy the smart contracts:
  5. The backend will be deployed locally, and you can interact with the Candid UI to test API endpoints. 🎉

Frontend Setup 🌈

  1. Navigate to the frontend directory:
  2. Install dependencies:
  3. Start the development server:
  4. Open http://localhost:3000 in your browser to view the application. 🚀

Make sure your .env looks like this, with your canister id

NEXT_PUBLIC_VOTING_CANISTER_ID=be2us-64aaa-aaaaa-qaabq-cai
NODE_ENV=development
NEXT_PUBLIC_IC_HOST=http://localhost:4943

The landing page will look similar to this

Landing Page

Category Management

Category Management

User Profile

Profile

Proposals

Proposals

API Endpoints 🔌

User Management 👥

Proposal Management 📝

Comment System 💬

Category Management 🏷️

Utility Endpoints 🛠️

Features ✨

Contributing 🤝

  1. Fork the repository 🍴
  2. Create your feature branch (git checkout -b feature/AmazingFeature) 🌿
  3. Commit your changes (git commit -m 'Add some AmazingFeature') 💾
  4. Push to the branch (git push origin feature/AmazingFeature) 🚀
  5. Open a Pull Request 📬

License 📜

MIT License ⚖️

Contact 📞

Acknowledgements 🙏