# clifftech123/task-management-microservices architecture

> Architecture diagram of the GitHub repository clifftech123/task-management-microservices, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/clifftech123/task-management-microservices
- Repository: https://github.com/clifftech123/task-management-microservices

## Overview

This is an ASP.NET Core project-management microservices system: users authenticate and receive JWTs, while project and task services own the corresponding domains; the gateway is the documented entry point. The sampled source confirms the user API-to-service flow and Aspire resource references. Project/task endpoints and the README-described gRPC, messaging, and logging implementations were not sampled, so those capabilities are shown only at the documented level.

Main entry points: [`src/task-management-microservices.AppHost/Program.cs`](https://github.com/clifftech123/task-management-microservices/blob/master/src/task-management-microservices.AppHost/Program.cs) (Aspire host), [`src/ProjectService.API/Program.cs`](https://github.com/clifftech123/task-management-microservices/blob/master/src/ProjectService.API/Program.cs) (Project service), [`src/TaskService.API/Program.cs`](https://github.com/clifftech123/task-management-microservices/blob/master/src/TaskService.API/Program.cs) (Task service), [`src/UserService.API/Controllers/UserController.cs`](https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Controllers/UserController.cs) (User API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and runtime"]
  node_gateway["YARP gateway<br/>[Program.cs]"]
  node_apphost["Aspire host<br/>[Program.cs]"]
end

subgraph group_identity["Identity"]
  node_userapi["User API<br/>[UserController.cs]"]
  node_usersvc["User service<br/>[UserServices.cs]"]
  node_identityconfig["Identity and JWT setup"]
  node_token["Token service<br/>[TokenService.cs]"]
  node_currentuser["Current user lookup"]
  node_userdbcontext["User data context"]
end

subgraph group_domains["Project and task domains"]
  node_projectapi["Project service<br/>[Program.cs]"]
  node_projectentity["Project and tags<br/>[Project.cs]"]
  node_taskapi["Task service<br/>[Program.cs]"]
  node_taskentity["Task and tags<br/>[Task.cs]"]
end

subgraph group_platform["Platform integrations"]
  node_userdb[("User database")]
  node_projectdb[("Project database")]
  node_taskdb[("Task database")]
  node_rabbit["RabbitMQ event bus"]
  node_redis[("Redis")]
  node_grpc{{"gRPC links"}}
  node_logging["Serilog and Seq"]
  node_servicedefaults["Service defaults<br/>[Extensions.cs]"]
end

node_client(("API client"))

node_client -->|"sends requests"| node_gateway
node_gateway -->|"routes requests"| node_userapi
node_gateway -->|"routes requests"| node_projectapi
node_gateway -->|"routes requests"| node_taskapi
node_userapi -->|"calls"| node_usersvc
node_usersvc -->|"uses identity"| node_identityconfig
node_usersvc -->|"generates tokens"| node_token
node_usersvc -->|"gets user ID"| node_currentuser
node_usersvc -->|"accesses users"| node_userdbcontext
node_userdbcontext -->|"reads and writes"| node_userdb
node_projectapi -->|"owns domain"| node_projectentity
node_taskapi -->|"owns domain"| node_taskentity
node_apphost -->|"starts"| node_gateway
node_apphost -->|"starts"| node_userapi
node_apphost -->|"starts"| node_projectapi
node_apphost -->|"starts"| node_taskapi
node_apphost -->|"provides resource"| node_userdb
node_apphost -->|"provides resource"| node_projectdb
node_apphost -->|"provides resource"| node_taskdb
node_apphost -->|"provides resource"| node_rabbit
node_apphost -->|"provides resource"| node_redis
node_apphost -->|"configures services"| node_servicedefaults
node_projectapi -.->|"uses event bus"| node_rabbit
node_taskapi -.->|"uses event bus"| node_rabbit
node_userapi -.->|"uses event bus"| node_rabbit
node_projectapi -.->|"service communication"| node_grpc
node_taskapi -.->|"service communication"| node_grpc
node_userapi -.->|"service communication"| node_grpc
node_projectapi -.->|"references cache"| node_redis
node_taskapi -.->|"references cache"| node_redis
node_userapi -.->|"structured logging"| node_logging
node_projectapi -.->|"structured logging"| node_logging
node_taskapi -.->|"structured logging"| node_logging

click node_gateway "https://github.com/clifftech123/task-management-microservices/blob/master/src/Gateway.API/Program.cs"
click node_apphost "https://github.com/clifftech123/task-management-microservices/blob/master/src/task-management-microservices.AppHost/Program.cs"
click node_userapi "https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Controllers/UserController.cs"
click node_usersvc "https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Services/UserServices.cs"
click node_identityconfig "https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Extensions/AddApplicationService.cs"
click node_token "https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Services/TokenService.cs"
click node_currentuser "https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Services/CurrentUserService.cs"
click node_userdbcontext "https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Infrastructure/Context/ApplicationDbContext.cs"
click node_projectapi "https://github.com/clifftech123/task-management-microservices/blob/master/src/ProjectService.API/Program.cs"
click node_projectentity "https://github.com/clifftech123/task-management-microservices/blob/master/src/ProjectService.API/Domain/Entities/Project.cs"
click node_taskapi "https://github.com/clifftech123/task-management-microservices/blob/master/src/TaskService.API/Program.cs"
click node_taskentity "https://github.com/clifftech123/task-management-microservices/blob/master/src/TaskService.API/Domain/Entities/Task.cs"
click node_servicedefaults "https://github.com/clifftech123/task-management-microservices/blob/master/src/task-management-microservices.ServiceDefaults/Extensions.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_gateway,node_apphost,node_client toneBlue
class node_userapi,node_usersvc,node_identityconfig,node_token,node_currentuser,node_userdbcontext toneAmber
class node_projectapi,node_projectentity,node_taskapi,node_taskentity toneMint
class node_userdb,node_projectdb,node_taskdb,node_rabbit,node_redis,node_grpc,node_logging,node_servicedefaults toneRose
```

## Components

### Entry and runtime

- [YARP gateway](https://github.com/clifftech123/task-management-microservices/blob/master/src/Gateway.API/Program.cs): `src/Gateway.API/Program.cs`
- [Aspire host](https://github.com/clifftech123/task-management-microservices/blob/master/src/task-management-microservices.AppHost/Program.cs): `src/task-management-microservices.AppHost/Program.cs`

### Identity

- [User API](https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Controllers/UserController.cs): `src/UserService.API/Controllers/UserController.cs`
- [User service](https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Services/UserServices.cs): `src/UserService.API/Services/UserServices.cs`
- [Identity and JWT setup](https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Extensions/AddApplicationService.cs): `src/UserService.API/Extensions/AddApplicationService.cs`
- [Token service](https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Services/TokenService.cs): `src/UserService.API/Services/TokenService.cs`
- [Current user lookup](https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Services/CurrentUserService.cs): `src/UserService.API/Services/CurrentUserService.cs`
- [User data context](https://github.com/clifftech123/task-management-microservices/blob/master/src/UserService.API/Infrastructure/Context/ApplicationDbContext.cs): `src/UserService.API/Infrastructure/Context/ApplicationDbContext.cs`

### Project and task domains

- [Project service](https://github.com/clifftech123/task-management-microservices/blob/master/src/ProjectService.API/Program.cs): `src/ProjectService.API/Program.cs`
- [Project and tags](https://github.com/clifftech123/task-management-microservices/blob/master/src/ProjectService.API/Domain/Entities/Project.cs): `src/ProjectService.API/Domain/Entities/Project.cs`
- [Task service](https://github.com/clifftech123/task-management-microservices/blob/master/src/TaskService.API/Program.cs): `src/TaskService.API/Program.cs`
- [Task and tags](https://github.com/clifftech123/task-management-microservices/blob/master/src/TaskService.API/Domain/Entities/Task.cs): `src/TaskService.API/Domain/Entities/Task.cs`

### Platform integrations

- **User database**
- **Project database**
- **Task database**
- **RabbitMQ event bus**
- **Redis**
- **gRPC links**
- **Serilog and Seq**
- [Service defaults](https://github.com/clifftech123/task-management-microservices/blob/master/src/task-management-microservices.ServiceDefaults/Extensions.cs): `src/task-management-microservices.ServiceDefaults/Extensions.cs`

### Other components

- **API client**

## Connections

- API client → YARP gateway: sends requests
- YARP gateway → User API: routes requests
- YARP gateway → Project service: routes requests
- YARP gateway → Task service: routes requests
- User API → User service: calls
- User service → Identity and JWT setup: uses identity
- User service → Token service: generates tokens
- User service → Current user lookup: gets user ID
- User service → User data context: accesses users
- User data context → User database: reads and writes
- Project service → Project and tags: owns domain
- Task service → Task and tags: owns domain
- Aspire host → YARP gateway: starts
- Aspire host → User API: starts
- Aspire host → Project service: starts
- Aspire host → Task service: starts
- Aspire host → User database: provides resource
- Aspire host → Project database: provides resource
- Aspire host → Task database: provides resource
- Aspire host → RabbitMQ event bus: provides resource
- Aspire host → Redis: provides resource
- Aspire host → Service defaults: configures services
- Project service → RabbitMQ event bus: uses event bus
- Task service → RabbitMQ event bus: uses event bus
- User API → RabbitMQ event bus: uses event bus
- Project service → gRPC links: service communication
- Task service → gRPC links: service communication
- User API → gRPC links: service communication
- Project service → Redis: references cache
- Task service → Redis: references cache
- User API → Serilog and Seq: structured logging
- Project service → Serilog and Seq: structured logging
- Task service → Serilog and Seq: structured logging
