🎓 A full-stack student awards voting platform with events, nominees, dashboards, notifications, and results.
Spring Boot API · React/Vite UI · H2 Local DB
Bright Future lets students register, sign in, and vote in active campus award events. Admin users can manage events, categories, nominees, students, notifications, dashboards, and published result reports from one connected web app.
The project is organized as one Spring Boot backend and one React/Vite frontend, so the modules are easier to run, test, and maintain.
.
|-- backend/ Spring Boot API, security, database, reports, and mail
|-- frontend/ React/Vite app with all UI modules
|-- data/ Local H2 database files for development
|-- docs/ Logo and README assets
`-- README.md
- Java 17
- Node.js 18 or newer
- npm
Start the backend:
cd backend
.\mvnw.cmd spring-boot:runStart the frontend in a second terminal:
cd frontend
npm install
npm run devLocal URLs:
| App | URL |
|---|---|
| 🌐 Frontend | http://localhost:5173 |
| 🔌 Backend API | http://localhost:8080 |
| 🗄 H2 console | http://localhost:8080/h2-console |
Backend:
cd backend
.\mvnw.cmd testFrontend:
cd frontend
npm run lint
npm run buildBackend configuration lives in backend/src/main/resources/application.yml. Use backend/.env.example as a reference for local or deployment environment variables.
Use frontend/.env.example as the reference for frontend configuration.
Common backend variables:
SPRING_DATASOURCE_URLSPRING_DATASOURCE_USERNAMESPRING_DATASOURCE_PASSWORDAPP_JWT_SECRETSPRING_MAIL_USERNAMESPRING_MAIL_PASSWORDAPP_MAIL_FROM_ADDRESSAPP_MAIL_FROM_NAME
Build output, dependencies, secrets, and local data should stay out of Git. That includes node_modules/, target/, frontend/dist/, and H2 database files under data/.
The repo includes:
.gitignorefor build output, local databases, editor files, and secrets.editorconfigfor editor formatting defaults.gitattributesfor consistent line endings, including Maven wrapper scripts