How bunnycoder1999/tasks-be works
Purpose and Runtime
Task Tracker is a Spring Boot REST backend for CRUD management of task lists and their tasks. The README describes a React/Vite client, but no frontend source exists in this repository. The application runs on Java/Spring Boot, exposes REST endpoints, and persists through Spring Data JPA to PostgreSQL; Docker Compose provisions the database.
• src/main/java/com/springbunny/tasks/TasksApplication.java
• pom.xml
• docker-compose.yml
Application Entry and HTTP Boundary
TasksApplication is the Spring Boot bootstrap entry point. REST controllers form the external API boundary, with task-list routes prefixed by /api/task-lists; task operations are likely nested under or coordinated with list operations.
• src/main/java/com/springbunny/tasks/controllers/TaskListController.java
• src/main/java/com/springbunny/tasks/controllers/TaskController.java
• src/main/java/com/springbunny/tasks/TasksApplication.java
Task-List Domain Stage
Task lists are a primary aggregate for organizing tasks. The controller delegates list CRUD to a service, which persists through a repository and presents DTOs rather than exposing entities directly.
• src/main/java/com/springbunny/tasks/domain/entities/TaskList.java
• src/main/java/com/springbunny/tasks/services/impl/TaskListServiceImpl.java
• src/main/java/com/springbunny/tasks/repositories/TaskListRepository.java
Task Domain Stage
Tasks belong to the task-management model and carry status and priority domain values. Task service logic is the principal place for operations such as creation, updates to title/description/status, deletion, and association with a task list.
• src/main/java/com/springbunny/tasks/domain/entities/Task.java
• src/main/java/com/springbunny/tasks/domain/entities/TaskStatus.java
• src/main/java/com/springbunny/tasks/services/impl/TaskServiceImpl.java
API Contract and Mapping Boundary
Controllers exchange TaskDto and TaskListDto contracts. Dedicated mappers isolate entity-to-DTO conversion, allowing JPA relationships and persistence details to remain behind the service/API boundary.
• src/main/java/com/springbunny/tasks/domain/dto/TaskDto.java
• src/main/java/com/springbunny/tasks/mappers/impl/TaskMapperImpl.java
• src/main/java/com/springbunny/tasks/mappers/impl/TaskListMapperImpl.java
Persistence and Infrastructure
Repository interfaces provide the data-access boundary over JPA entities. PostgreSQL is the material external dependency, expected to run via Docker Compose; runtime database settings are supplied through Spring application properties.
• src/main/java/com/springbunny/tasks/repositories/TaskRepository.java
• src/main/java/com/springbunny/tasks/repositories/TaskListRepository.java
• src/main/resources/application.properties
Error Flow
Request validation or service failures are centrally translated into API error responses by controller advice. This prevents persistence/domain exceptions from leaking directly through REST endpoints.
• src/main/java/com/springbunny/tasks/controllers/GlobalExceptionHandler.java
• src/main/java/com/springbunny/tasks/domain/dto/ErrorResponse.java
Main entry points: TaskListController.java Task list controller · TaskController.java Task controller · TaskServiceImpl.java Task service · TaskListServiceImpl.java Task list service
Components 19
REST API
- Task list controller · Exposes /api/task-lists CRUD routes.
src/main/java/com/springbunny/tasks/controllers/TaskListController.java - Task controller · Exposes task operations.
src/main/java/com/springbunny/tasks/controllers/TaskController.java - Exception handler · Translates failures into API errors.
src/main/java/com/springbunny/tasks/controllers/GlobalExceptionHandler.java - Error response
src/main/java/com/springbunny/tasks/domain/dto/ErrorResponse.java - Task list DTO
- Task DTO
src/main/java/com/springbunny/tasks/domain/dto/TaskDto.java
Task Domain
- Task list service · Coordinates task-list CRUD.
src/main/java/com/springbunny/tasks/services/impl/TaskListServiceImpl.java - Task service · Manages task lifecycle and list association.
src/main/java/com/springbunny/tasks/services/impl/TaskServiceImpl.java - Task list mapper
src/main/java/com/springbunny/tasks/mappers/impl/TaskListMapperImpl.java - Task mapper
src/main/java/com/springbunny/tasks/mappers/impl/TaskMapperImpl.java - Task list · Aggregate that organizes tasks.
src/main/java/com/springbunny/tasks/domain/entities/TaskList.java - Task · Task with status and priority.
src/main/java/com/springbunny/tasks/domain/entities/Task.java - Task status
src/main/java/com/springbunny/tasks/domain/entities/TaskStatus.java
Persistence
- Task list repository
src/main/java/com/springbunny/tasks/repositories/TaskListRepository.java - Task repository
src/main/java/com/springbunny/tasks/repositories/TaskRepository.java - PostgreSQL · Provisioned by Docker Compose.
docker-compose.yml - Application properties · Supplies database settings.
src/main/resources/application.properties
Other components
- Spring Boot app · Application entry point.
src/main/java/com/springbunny/tasks/TasksApplication.java - Maven build
pom.xml
Connections 22
- Maven build → Spring Boot app: builds
- Spring Boot app → Task list controller: serves
- Spring Boot app → Task controller: serves
- Task list controller → Task list service: delegates CRUD
- Task controller → Task service: delegates operations
- Task list controller → Task list DTO: uses
- Task controller → Task DTO: uses
- Task list service → Task list mapper: maps
- Task service → Task mapper: maps
- Task list mapper → Task list: converts
- Task mapper → Task: converts
- Task list service → Task list repository: persists via
- Task service → Task repository: persists via
- Task service → Task list repository: associates with
- Task → Task list: belongs to
- Task → Task status: has status
- Task list repository → PostgreSQL: JPA access
- Task repository → PostgreSQL: JPA access
- Application properties → PostgreSQL: configures connection
- Exception handler → Error response: returns
- Task list controller → Exception handler: failures handled by
- Task controller → Exception handler: failures handled by