How jolapsh/voting-system works
This Spring Boot REST API supports an admin-maintained restaurant and daily-dish catalog, plus user voting: users browse restaurants and dishes, then cast one vote per day and may change it before 11 a.m. Admin endpoints manage restaurants and dishes; Spring Security applies role-based access and basic authentication. The domain model and JPA repositories persist users, restaurants, dishes, and votes. The README documents HSQL/JPA, but the excerpts do not show runtime database wiring, so that connection is marked unverified.
Main entry points: VoteServiceImpl.java Vote service · RestaurantServiceImp.java Restaurant service · DishServiceImpl.java Dish service · UserServiceSecurity.java User details
Components 22
REST API
- Spring Boot app
src/main/java/top/graduation/rs/SpringBootApp.java - Browse restaurants
src/main/java/top/graduation/rs/web/user/RootController.java - Vote endpoint
src/main/java/top/graduation/rs/web/user/VoteController.java - Restaurant admin
src/main/java/top/graduation/rs/web/admin/RestaurantAdminController.java - Dish admin
src/main/java/top/graduation/rs/web/admin/DishAdminController.java - API errors
src/main/java/top/graduation/rs/web/ExceptionInfoHandler.java
Security
- Security config
src/main/java/top/graduation/rs/config/WebSecurityConfig.java - User details
src/main/java/top/graduation/rs/service/UserServiceSecurity.java - Authorized user
src/main/java/top/graduation/rs/AuthorizedUser.java - Security utilities
src/main/java/top/graduation/rs/web/SecurityUtil.java
Voting Domain
- Restaurant service
src/main/java/top/graduation/rs/service/RestaurantServiceImp.java - Dish service
src/main/java/top/graduation/rs/service/DishServiceImpl.java - Vote service
src/main/java/top/graduation/rs/service/VoteServiceImpl.java - Vote result
src/main/java/top/graduation/rs/to/VoteTo.java - Domain entities
src/main/java/top/graduation/rs/model - Validation helpers
src/main/java/top/graduation/rs/util/ValidationUtil.java
Persistence
- Restaurant repository
src/main/java/top/graduation/rs/repository/datajpa/RestaurantRepository.java - Dish repository
src/main/java/top/graduation/rs/repository/datajpa/DishRepository.java - User repository
src/main/java/top/graduation/rs/repository/datajpa/UserRepository.java - Vote repository
src/main/java/top/graduation/rs/repository/datajpa/VoteRepository.java - HSQL database
Other components
- REST client
Connections 23
- REST client → Spring Boot app: sends requests
README.md - Browse restaurants → Restaurant service: queries restaurants
src/main/java/top/graduation/rs/web/user/RootController.java - Vote endpoint → Vote service: submits votes
src/main/java/top/graduation/rs/web/user/VoteController.java - Vote endpoint → Security utilities: gets user
src/main/java/top/graduation/rs/web/user/VoteController.java - Restaurant admin → Restaurant service: manages restaurants
src/main/java/top/graduation/rs/web/admin/RestaurantAdminController.java - Dish admin → Dish service: manages dishes
src/main/java/top/graduation/rs/web/admin/DishAdminController.java - Security config → User details: loads users
src/main/java/top/graduation/rs/config/WebSecurityConfig.java - User details → User repository: looks up users
src/main/java/top/graduation/rs/service/UserServiceSecurity.java - User details → Authorized user: creates principal
src/main/java/top/graduation/rs/service/UserServiceSecurity.java - Security utilities → Authorized user: reads principal
src/main/java/top/graduation/rs/web/SecurityUtil.java - Restaurant service → Restaurant repository: queries and saves
src/main/java/top/graduation/rs/service/RestaurantServiceImp.java - Dish service → Dish repository: queries and saves
src/main/java/top/graduation/rs/service/DishServiceImpl.java - Dish service → Restaurant service: resolves restaurant
src/main/java/top/graduation/rs/service/DishServiceImpl.java - Vote service → Restaurant repository: loads restaurant
src/main/java/top/graduation/rs/service/VoteServiceImpl.java - Vote service → User repository: loads user
src/main/java/top/graduation/rs/service/VoteServiceImpl.java - Vote service → Vote repository: stores and queries
src/main/java/top/graduation/rs/service/VoteServiceImpl.java - Vote service → Vote result: returns vote result
src/main/java/top/graduation/rs/service/VoteServiceImpl.java - Restaurant service → Validation helpers: checks results
src/main/java/top/graduation/rs/service/RestaurantServiceImp.java - Dish service → Validation helpers: checks results
src/main/java/top/graduation/rs/service/DishServiceImpl.java - Restaurant repository → HSQL database: persists entities
- Dish repository → HSQL database: persists entities
- User repository → HSQL database: persists entities
- Vote repository → HSQL database: persists entities