A voting app in Java Spring Boot and Angular.
This project is related to the module 294 and 295 from the Swiss Education Ordinance in information technologies.
The system is capable of displaying results from multiple users in one election statistic. You can create several elections in which the users can make their entries. The elections, as well as the results, should refer to a database via a REST interface and be saved there.
Users can log in to the application via a login page. Elections and their results can be viewed without registration, but registration is mandatory in order to be able to take part in them.
The application is saved in a GitHub repository.
Feel free to fork the project or clone it to your local machine.
git clone https://github.com/leonden/vote-app.gitThe backend is implemented in Java as a Spring Boot application.
Make sure you have Java 17 installed.
After cloning the repository to your local machine, you can cd into it. Then head to \backend\vote-app and run
mvn spring-boot:runAfter running this command, you can head to http://localhost:8080 to see the API documentation in the local Swagger UI.
The frontend is implemented in TypeScript as an Angular application.
For efficient development purposes, the app uses the Angular Material component library from Google.
From the root project directory, cd into \frontend\vote-app\ and run ng serve for a dev server. Navigate to http://localhost:4200/. The application will automatically reload if you change any of the source files.
Data is stored in a PostgreSQL database. For an easy usage and database integration, the app uses Java JPA.
The authentication process is made possible with OAuth2 and Keycloak. Users are organized inside of the local Keycloak environment.
The entire project is MIT licensed, which means, that anyone can use this project and its source code for personal purposes.
