A Spring Boot REST API designed as a live coding interview practice repository. Students clone the repo, familiarize themselves with the codebase (~10 min), and then the interviewer assigns tasks from INTERVIEW_TASKS.md based on the candidate's level.
The codebase is intentionally designed with working features alongside gaps, bugs, and areas for improvement — giving interviewers realistic scenarios to test candidates.
- Java 25
- Spring Boot 4.0.2
- Spring Data JPA
- H2 Database (in-memory)
- Maven
- Lombok
- Java 25+
- Maven 3.9+
./mvnw spring-boot:runThe app starts on http://localhost:8080.
./mvnw clean testAvailable at http://localhost:8080/h2-console
- JDBC URL:
jdbc:h2:mem:tododb - Username:
sa - Password: (empty)
GET /api/users— List all usersGET /api/users/{id}— Get user by IDPOST /api/users— Create userPUT /api/users/{id}— Update userDELETE /api/users/{id}— Delete user
GET /api/todos— List all todosPOST /api/todos— Create todoDELETE /api/todos/{id}— Delete todo
GET /api/comments/todo/{todoId}— Get comments for a todoPOST /api/comments/todo/{todoId}— Create a comment for a todo
src/main/java/com/amigoscode/interview/
├── InterviewPracticeApplication.java
├── user/ ← Fully working CRUD (reference implementation)
│ ├── User.java
│ ├── UserRepository.java
│ ├── UserService.java
│ └── UserController.java
├── todo/ ← Working but with intentional issues
│ ├── Todo.java
│ ├── TodoRepository.java
│ ├── TodoService.java
│ └── TodoController.java
└── comment/ ← Partially implemented (intentional gaps)
├── Comment.java
├── CommentRepository.java
└── CommentController.java
The application comes pre-loaded with:
- 4 Users — johndoe, janedoe, bobsmith, alicewong
- 12 Todos — 3 per user across various priorities
- 8 Comments — Distributed across the todos
curl -X POST http://localhost:8080/api/users \
-H "Content-Type: application/json" \
-d '{"username": "newuser", "email": "newuser@example.com"}'curl -X POST http://localhost:8080/api/todos \
-H "Content-Type: application/json" \
-d '{"title": "Learn Docker", "description": "Complete the Docker tutorial", "priority": "MEDIUM", "dueDate": "2024-08-01", "user": {"id": 1}}'curl -X POST http://localhost:8080/api/comments/todo/1 \
-H "Content-Type: application/json" \
-d '{"content": "Great progress on this!", "authorName": "janedoe"}'See INTERVIEW_TASKS.md for the full task list organized by level (Junior / Mid / Senior).