Frontend Repos:
- Angular UI: https://github.com/404Meet/student-survey
- Vue.js UI: https://github.com/404Meet/student-survey-vue.js
A Spring Boot REST API that powers a Student Survey application. The API supports CRUD operations for survey submissions, persists data to MySQL, and uses Flyway migrations (schema + stored procedures). Designed to be consumed by both the Angular and Vue.js frontends.
- ✅ RESTful CRUD API for survey submissions (
/api/surveys) - ✅ MySQL persistence with Flyway migrations (tables + procedures)
- ✅ Input validation + clean request/response DTO-style payloads
- ✅ CORS enabled for frontend integration
- ✅ Supports local dev, AWS RDS, or containerized MySQL via env config
- Java 21
- Spring Boot 3.5.x
- MySQL
- Flyway (migrations + stored procedures)
- JdbcTemplate / SimpleJdbcCall (DAO layer)
- Maven
controller/— REST endpoints (survey CRUD)service/— business logicdao/— DB access (JdbcTemplate / SimpleJdbcCall)model/— entities / DTOsresources/db/migration/— Flyway SQL migrations
Base path: /api/surveys
GET /api/surveys— list all surveysGET /api/surveys/{id}— get by idPOST /api/surveys— create surveyPUT /api/surveys/{id}— update surveyDELETE /api/surveys/{id}— delete survey
- Java 21
- Maven
- MySQL (local / Docker / AWS RDS)
Required
DB_HOSTDB_PORTDB_NAMEDB_USERDB_PASSWORD
Optional
SERVER_PORT(default depends on your config)CORS_ORIGINS(e.g.,http://localhost:4200,http://localhost:5173)
export DB_HOST="localhost"
export DB_PORT="3306"
export DB_NAME="student_survey"
export DB_USER="root"
export DB_PASSWORD="password"
export CORS_ORIGINS="http://localhost:4200,http://localhost:5173"
#### Windows
$env:DB_HOST="localhost"
$env:DB_PORT="3306"
$env:DB_NAME="student_survey"
$env:DB_USER="root"
$env:DB_PASSWORD="password"
$env:CORS_ORIGINS="http://localhost:4200,http://localhost:5173"