A full-stack quiz platform covering any topics. Built with Spring Boot (backend) and Angular (frontend), deployed as separated services on AWS (emulated locally by Floci).
- Backend: Spring Boot 3, Spring Data JPA, Flyway, PostgreSQL
- Frontend: Angular 21
- Deployment: Terraform → AWS via Floci (S3 + ECS/Fargate + ALB + RDS)
- Java 21
- Node 20+ / npm
- Docker
docker compose up -dcd backend
./mvn spring-boot:runAPI available at http://localhost:8080/api/quizzes
cd frontend
npm install
npm startApp available at http://localhost:4200. All /api requests are proxied to the backend — no CORS setup needed in development.
cd backend
./mvn testcd backend
./mvn verifyReport is generated at backend/target/site/jacoco/index.html.
cd frontend
npm testdocker build -t swe-quizzes .
docker run -p 8080:8080 \
-e SPRING_DATASOURCE_URL=jdbc:postgresql://<host>:5432/swequizzes \
-e SPRING_DATASOURCE_USERNAME=<user> \
-e SPRING_DATASOURCE_PASSWORD=<password> \
swe-quizzesThe frontend and backend are deployed separately to AWS, emulated locally by Floci. See FLOCI-README.md for the full deploy and rebuild guide. In short:
docker compose -f floci-compose.yml up -d # start the emulated AWS
./deploy-floci.sh # provision + build + deploy everythingFlyway runs automatically on startup. Migration files live in backend/src/main/resources/db/migration/:
| File | Description |
|---|---|
V1__create_tables.sql |
Creates quiz, question, answer tables |
V2__seed_data.sql |
Seeds 3 quizzes with questions and answers |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/quizzes |
List all quizzes |
| GET | /api/quizzes/{id} |
Get a quiz with questions and answers |