Giter VIP home page Giter VIP logo

secure-vote's Introduction

Contributors Forks Stargazers Issues


Logo

Electoral Voting Web Application - Secure Vote

StackTrek Capstone Project

Report Bug ยท Request Feature

Table of Contents

Introduction

Securevote is a secure and user-friendly application designed to facilitate electronic voting processes in various contexts, such as elections, surveys, and decision-making within organizations. This app ensures transparency, security, and ease of use, making it an ideal solution for modernizing the voting experience. The app link is secure-vote.onrender.com

Key advantages of the Electronic Voting App include:

  • Security: Utilizes advanced encryption techniques to protect the integrity and confidentiality of votes.
  • Accessibility: Provides a user-friendly interface that ensures people of all abilities can cast their votes.
  • Auditing: Generates detailed logs to facilitate auditing and maintain the transparency of the voting process.
  • Customization: Allows administrators to configure voting options, candidates, and settings to suit their specific needs.
  • Scalability: Easily scales to accommodate small or large-scale voting events.

Features

User Features

  1. User Registration and Authentication: Users can create accounts and log in securely.

  2. Voting: Users can cast their votes electronically for candidates or options.

  3. Verification: Users can verify the status of their votes to ensure they were counted accurately.

  4. Results: Users can view real-time voting results, if authorized by administrators.

Administrator Features

  1. Administrator Dashboard: Administrators have access to a dashboard for managing elections and overseeing the voting process.

  2. Election Configuration: Administrators can create, configure, and schedule elections, specifying candidates, voting periods, and other settings.

  3. Voter Management: Administrators can add, edit, or remove voters and monitor their voting activity.

  4. Results Management: Administrators can access and export detailed voting results for analysis and reporting.

  5. Security: The app includes robust security features to prevent unauthorized access and protect against tampering.

Getting Started

Prerequisites

Before setting up the Electronic Voting App, make sure you have the following prerequisites:

  • Node.js (version 14.0 or higher)
  • npm (Node Package Manager)

Installation

  1. Clone the repository to your local machine:

    git clone https://github.com/emmanuelonwukwe/secure-vote.git
  2. Change to the project directory:

    cd secure-vote
  3. Install the required dependencies:

     cd server
     npm install
    cd client
    npm install
  4. Configure the application by creating a .env file in the server root directory and specifying the following environment variables:

    DATABASE_URL={your postgres database connection url}
    
    APP_ENVIRONMENT={development|production}
    
    SERVER_PORT=3000
    
    JWT_SECRET={your_secret_key}
    
  5. Start the application:

    client
    npm run dev
    
    server
    node index.js
  6. Access the app in your web browser at http://localhost:5173.

  7. Migrate your database tables by visiting this endpoint url http://localhost:3000/api/v1/create-db-tables

Usage

User Usage

  1. Registration: Users can create accounts with their personal information.

  2. Authentication: Log in securely with your username and password.

  3. Voting: Cast your vote in the active elections.

  4. Verification: After voting, verify your vote to ensure accuracy.

Administrator Usage

  1. Admin Login: Access the admin dashboard using admin credentials.

  2. Election Management: Create, configure, and schedule elections from the dashboard.

  3. Voter Management: Add, edit, or remove voters as needed.

  4. Results Management: Monitor and export voting results for analysis.

Security

Security is a top priority for SecureVote. The following security measures have been implemented:

  • Data Encryption: Sensitive data is encrypted using industry-standard encryption algorithms.

  • Authentication: User and administrator access is protected using JWT tokens.

  • Authorization: Role-based access control ensures that only authorized individuals can perform specific actions.

  • Auditing: Detailed logs are generated to track all voting and administrative activities.

  • Regular Security Audits: The app undergoes regular security audits and vulnerability assessments.

Contributing

We welcome contributions from the open-source community. If you'd like to contribute to the Electronic Voting App, please Reach out to us.

Authors

secure-vote's People

Contributors

emmanuelonwukwe avatar gabbyedgar avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

gabbyedgar

secure-vote's Issues

About Us page

Create an About us page โœ๐Ÿฝ๐Ÿฅ‚

Let Election Manager Create Election Poll and Monitor Vote Count When 'New Election Poll' Button is Clicked

Description: The 'Election Manager' who is a user with special privileges should be presented a 'New Election Poll' Button on their dashboard page when 'Elections' tab is selected. Clicking on this button should enable them to create a new election poll and start a counter that monitors vote count on the 'Results' tab.

As an election manager, I want to be able to start an election poll and receive a live update of the numbers so that I can monitor the count of votes for each electoral candidate.

Install and Configure Tailwind CSS

Summary: You are required to install and configure tailwind for the project.

Desccription: We need to have tailwind css for the project frontend styling. I will be installing and creating configuring the tailwind css in the client directory.

Re-initialize Project with TypeScript

The secure-vote app will benefit from being initialized with TypeScript for the following reasons:

  • Type safety
  • Improves code documentation and maintainability
  • Makes it easier to integrate with other modern projects

Show Voter's Vote History on 'History' Tab in Voter's Dashboard

Description: The registered and verified voter should be presented a dashboard and a history tab on it that can be switched to retrieve a list of their previous vote selections/candidates and a summary of their party vote trends over a selectable given period of time, namely; weekly, monthly, and yearly.

As a verified voter, I want to retrieve all my voting history when I click on the 'Voting History' tab so that I can see my voting pattern over a given period.

Register and Verify Voter on SignUp Flow UI

Description: The new voter should be presented with a series of screens that takes in their personal information and verifies their credibility as a citizen of the country through a government issued identification number.

As a voter, I want to click 'Register and Verify' Button so that I can be verified as an eligible voter using my BVN (Bank Verification Number).

Transform the Project Structure to have Client and Server Directories

Summary: You are required to change the project structure to have both the frontend as client directory and backend as server directory.

Description: We need both the frontend and backend codes to be in this project. Let me create a directory that will hold all the frontend codes and name it client. Also do same for the directory that will contain all the backend code and name it server.

Improve Project Documentation in README.md

  • Add a description of the project in the README.md file.
  • Include badges for Contributors, Forks, Stars and Issues.
  • List the stack of technologies used to build the project.
  • Include installation instructions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.