- Overview
- Setup and Installation
- Technologies Used
- Backend Infrastructure
- Database Design
- Frontend Development
- Admin Controls
- User Interactions
- Challenges & Solutions
- Future Developments
- Contributors
- References
The Voting Application Project is designed to digitize the conventional voting process, making it more accessible, efficient, and secure. By allowing users to cast their votes effortlessly, this platform emphasizes the sanctity and privacy of every vote.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
-
Clone the repository:
git clone https://github.com/Ajelz/votingappsystem
-
Navigate to the backend folder and install the required dependencies for the backend:
cd backend
npm install bcrypt cors dotenv express express-rate-limit express-validator jsonwebtoken mysql2 sequelize winston --save
-
Set up the environment variables based on the
.env.example
file. -
Start the backend server:
node app.js
-
For the frontend, ensure you have Flutter SDK installed.
-
If running on an Android device, ensure you either have a virtual Android device from Android Studio installed and running or an Android device connected by cable.
-
Navigate to the frontend folder and run the Flutter app:
flutter run
- Backend: Node.js, Express.js
- Frontend: Dart, Flutter
- Database: MySQL with Sequelize ORM
- Authentication: JWT
- Others: Shared Preferences for token management in Dart
A set of APIs has been developed to ensure seamless interaction with the frontend. Middleware authentication is integrated to guarantee secure and authenticated data transactions. The application also incorporates error-handling mechanisms to manage unexpected issues gracefully.
The database is meticulously designed to prioritize data integrity. Relationships between various entities have been clearly defined to ensure efficient data storage and retrieval. Five main models (User, Admin, Poll, Option, User_Vote) form the core of our data structure.
The frontend journey is optimized from registration to vote casting. Emphasis has been placed on mobile responsiveness, ensuring users can navigate and interact with the platform seamlessly, irrespective of their device.
Admin functionalities offer comprehensive control over polls. They can create, modify, and manage polls. Admins also have capabilities to manage user profiles, ensuring system integrity.
Regular users experience a streamlined voting procedure. Features allow them to view and even alter their past votes, ensuring transparency and flexibility.
Development was not without its challenges, including guaranteeing vote anonymity and adeptly handling potential API failures. However, with each challenge came a solution, refining the application further.
The project lays a strong foundation for future enhancements. Potential integrations include real-time voting analytics and more.
- Amjad Elazzabi