Overview

This is a simple Task Manager application built with Java + Spring Boot. I created it as a way to learn the Spring ecosystem, practice domain-driven design patterns, and understand how Java applications handle persistence, validation, and request/response lifecycles.

Through this project, I gained hands-on experience with Spring Boot project setup, JPA/Hibernate, layered architecture, DTO mapping, and REST API design. It also gave me an opportunity to compare concepts I knew from Python frameworks (Django, FastAPI, SQLAlchemy) with their Java equivalents.


Architecture & Package Layout

com.example.taskmanager
└─ TaskmanagerApplication.java       # Root Spring Boot application
└─ todo/
   ├─ domain/                        # Entities (database models)
   │  └─ Todo.java
   ├─ repo/                          # Repository abstraction
   │  └─ TodoRepository.java
   ├─ service/                       # Business logic
   │  ├─ TodoService.java
   │  └─ TodoNotFoundException.java
   ├─ dto/                           # Request/Response objects
   │  ├─ CreateTodoRequest.java
   │  ├─ UpdateTodoRequest.java
   │  └─ TodoResponse.java
   ├─ mapper/                        # Entity ↔ DTO mapping
   │  └─ TodoMapper.java
   └─ web/                           # HTTP controllers & error handling
      ├─ TodoController.java
      └─ ApiErrors.java


Key Concepts I Practiced


In Plain English