ToDo App is a microservices-based application consisting of two core services:
- User Service – Handles user registration, authentication, authorization (JWT), and profile management.
- Todo Service – Manages tasks for authenticated users, including CRUD operations, search, and task prioritization.
The system uses JWT for authentication, and all requests to Todo Service must be authorized via User Service.
toda-app/
├─ user-service/
│ ├─ src/
│ ├─ pom.xml
│ └─ README.md (User Service detailed docs)
├─ todo-service/
│ ├─ src/
│ ├─ pom.xml
│ └─ README.md (Todo Service detailed docs)
└─ README.md (This file)
| Technology | Purpose |
|---|---|
| Java 17 | Core backend language |
| Spring Boot | REST API development |
| Spring Security | Authentication & Authorization (JWT) |
| JWT | Token-based security |
| JPA / Hibernate | ORM |
| MySQL | Relational database |
| Swagger | API documentation |
| Lombok | Reduce boilerplate |
| Maven | Dependency management |
| JUnit & Mockito | Unit testing |
Handles user authentication and management.
Key Features:
- User registration, login, OTP activation
- JWT token generation and validation
- Profile management
- Secured endpoints
Run Locally:
cd user-service
mvn spring-boot:runFull Documentation – detailed User Service docs
Handles task management for authenticated users.
Key Features:
- Create, update, delete tasks
- Search tasks by name and priority
- Pagination for task listing
- Task ownership enforced via JWT
Run Locally:
cd todo-service
mvn spring-boot:runFull Documentation – detailed Todo Service docs
graph LR
A[User Service] -->|JWT Token Validation| B[Todo Service]
A -->|User Info| B
B -->|Tasks CRUD| DB_TODO[(Todo DB)]
A -->|User Data| DB_USER[(User DB)]
-
User Service validates tokens and provides user info to Todo Service.
-
Todo Service stores tasks in its own database, associated with user IDs.
-
- Ensure MySQL is running and databases for both services are created.
-
- Start User Service first to handle authentication.
-
- Start Todo Service and configure it to point to the User Service for JWT validation.
-
- Use Swagger UI or Postman to test APIs.