Skip to content

Repository files navigation

Task Management API

.NETPostgreSQLDocker

Enterprise Task & Project Management Platform built with .NET 10, PostgreSQL, Docker, and CI/CD.

Tech Stack

  • .NET 10 - Web API framework
  • PostgreSQL 16 - Primary database
  • Entity Framework Core 10 - ORM
  • Docker & Docker Compose - Containerization
  • GitHub Actions - CI/CD pipeline

Prerequisites

  • .NET 10 SDK
  • Docker Desktop
  • Git

Getting Started

# Run with Docker Compose
docker compose up -d
# Access the app# GUI Frontend: http://localhost:5000# Swagger UI: http://localhost:5000/swagger# Health Check: http://localhost:5000/health

Seed Credentials

RoleEmailPassword
Adminadmin@taskmanager.comAdmin123!
Useruser@taskmanager.comUser123!

GUI Frontend

The app includes a single-page GUI at http://localhost:5000/ built with vanilla HTML/CSS/JS (no npm, no build step). Use it to:

  • Log in with seed credentials
  • View, search, filter, and paginate tasks
  • Create, edit, and delete tasks
  • View analytics (task summary, completion rate, overdue report)

API Endpoints

MethodEndpointDescriptionAuth Required
GET/healthHealth checkNo
POST/api/v1/auth/registerRegister new userNo
POST/api/v1/auth/loginLogin, returns JWTNo
POST/api/v1/auth/refreshRefresh access token (rotated)No
GET/api/v1/auth/meGet current user infoYes
GET/api/v1/tasksList tasks (paginated)Yes
GET/api/v1/tasks/{id}Get task by IDYes
POST/api/v1/tasksCreate taskYes
PUT/api/v1/tasks/{id}Update taskYes
DELETE/api/v1/tasks/{id}Delete taskYes
GET/api/v1/analytics/task-summaryTask count by statusYes
GET/api/v1/analytics/completion-rateCompletion rate %Yes
GET/api/v1/analytics/overdueOverdue task reportYes
WS/hubs/tasksSignalR real-time hubYes

Security Features

  • JWT Authentication — 15-min access tokens + 7-day refresh tokens
  • Refresh Token Rotation — New token issued on each refresh; old token revoked
  • Compromised Token Detection — Reuse of a revoked token invalidates all user tokens
  • Login Rate Limiting — 5 failed attempts = 15-minute lockout per email
  • Rate Limiting — 100 requests/minute/IP via AspNetCoreRateLimit
  • Password Hashing — ASP.NET Core Identity PasswordHasher
  • Correlation IDsX-Correlation-ID header on all requests for tracing

Monitoring & Resilience

  • OpenTelemetry — Metrics exported to console (request duration, auth attempts, etc.)
  • Health Checks — PostgreSQL + Redis liveness probes at /health
  • EF Core RetryEnableRetryOnFailure(3) for transient DB failures
  • Polly — Installed for retry, circuit breaker, and timeout policies
  • Serilog — Structured logging to console + rolling daily files
  • SignalR — Real-time task notifications via WebSocket at /hubs/tasks

Project Structure

src/
├── TaskManagement.API # Controllers, Middleware, Program.cs
├── TaskManagement.Application # Services, DTOs, Interfaces
├── TaskManagement.Domain # Entities, Enums, Value Objects
└── TaskManagement.Infrastructure # EF Context, Repositories, External Services

About

Task & Project Management Platform built with .NET 10, PostgreSQL, Docker, and CI/CD

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages