Skip to content

enesgunumdogdu/Task-Management-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task Management API

A simple REST API for managing task lists and tasks, built with Spring Boot as a learning project.

Features

  • Task Lists Management: Create, read, update, and delete task lists
  • Tasks Management: Manage individual tasks within task lists
  • RESTful API: Clean REST endpoints with proper HTTP methods
  • Data Validation: Input validation with custom error handling
  • PostgreSQL Database: Persistent data storage
  • DTO Pattern: Clean separation between API and database models

Tech Stack

  • Java 24
  • Spring Boot 3.5.5
  • Spring Data JPA
  • PostgreSQL
  • Maven
  • Docker Compose

API Endpoints

Task Lists

  • GET /api/task-lists - Get all task lists
  • POST /api/task-lists - Create a new task list
  • GET /api/task-lists/{id} - Get a specific task list
  • PUT /api/task-lists/{id} - Update a task list
  • DELETE /api/task-lists/{id} - Delete a task list

Tasks

  • GET /api/task-lists/{listId}/tasks - Get all tasks in a list
  • POST /api/task-lists/{listId}/tasks - Create a new task
  • GET /api/task-lists/{listId}/tasks/{taskId} - Get a specific task
  • PUT /api/task-lists/{listId}/tasks/{taskId} - Update a task
  • DELETE /api/task-lists/{listId}/tasks/{taskId} - Delete a task

Quick Start

Prerequisites

  • Java 24
  • Docker & Docker Compose
  • Maven

Running the Application

  1. Start PostgreSQL database:

    docker-compose up -d
  2. Run the Spring Boot application:

    ./mvnw spring-boot:run
  3. API will be available at: http://localhost:8080

Example Requests

Create a task list:

curl -X POST http://localhost:8080/api/task-lists \
  -H "Content-Type: application/json" \
  -d '{"title": "My Tasks", "description": "Daily tasks"}'

Create a task:

curl -X POST http://localhost:8080/api/task-lists/{listId}/tasks \
  -H "Content-Type: application/json" \
  -d '{"title": "Complete project", "description": "Finish the Spring Boot project", "priority": "HIGH", "status": "PENDING"}'

Project Structure

src/main/java/com/enesgunumdogdu/tasks/
├── controllers/          # REST endpoints
├── services/            # Business logic
├── repositories/        # Data access layer
├── domain/
│   ├── entities/        # JPA entities
│   └── dto/            # Data transfer objects
└── mappers/            # Entity-DTO converters

Learning Highlights

This project demonstrates:

  • Layered Architecture (Controller → Service → Repository)
  • DTO Pattern for clean API design
  • Global Exception Handling with @ControllerAdvice
  • JPA Relationships (One-to-Many between TaskList and Task)
  • Stream API for functional programming
  • RESTful API Design principles

Database Schema

  • task_lists: id, title, description, created, updated
  • tasks: id, title, description, due_date, priority, status, task_list_id, created, updated

About

A simple REST API for managing task lists and tasks, built with Spring Boot as a learning project.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors