# mshchebetiuk/devboard architecture

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

- Interactive diagram: https://gitdiagram.com/mshchebetiuk/devboard
- Repository: https://github.com/mshchebetiuk/devboard

## Overview

DevBoard is a project-and-task management dashboard. Its main workflow serves project and task lists with search, filters, sorting, and pagination; task data also feeds a Kanban board, while separate dashboard and analytics pages present summary metrics and charts. Server-side services query PostgreSQL through Prisma and map data to DTOs. The README documents CRUD, validation, responsive UI, and visualizations; several implementation files are indexed but not excerpted, so relationships involving those files are shown only where the index or README supports them.

Main entry points: [`src/services/tasks.ts`](https://github.com/mshchebetiuk/devboard/blob/main/src/services/tasks.ts) (Task service), [`src/app/(dashboard)/projects/page.tsx`](https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/projects/page.tsx) (Project workspace), [`src/app/(dashboard)/tasks/page.tsx`](https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/tasks/page.tsx) (Task workspace), [`src/lib/prisma.ts`](https://github.com/mshchebetiuk/devboard/blob/main/src/lib/prisma.ts) (Prisma client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Dashboard experience"]
  node_dashboard["Dashboard metrics<br/>[page.tsx]"]
  node_analytics["Analytics view<br/>[page.tsx]"]
  node_analyticsviz["Analytics visualizations"]
end

subgraph group_management["Project and task management"]
  node_projectpage["Project workspace<br/>[page.tsx]"]
  node_projectforms["Project forms"]
  node_taskpage["Task workspace<br/>[page.tsx]"]
  node_taskforms["Task forms and cards"]
  node_projectactions["Project actions<br/>[projects.ts]"]
  node_taskactions["Task actions<br/>[tasks.ts]"]
  node_filters["Filter utilities<br/>[filters.ts]"]
  node_filterconstants["Filter options<br/>[filters.ts]"]
  node_pagination["Pagination controls<br/>[Pagination.tsx]"]
end

subgraph group_kanban["Kanban workflow"]
  node_kanbanpage["Kanban page<br/>[page.tsx]"]
  node_board["Kanban board<br/>[KanbanBoard.tsx]"]
  node_kanbanhook["Kanban task query"]
  node_kanbanapi["Kanban API client<br/>[kanban.ts]"]
  node_kanbanroute["Kanban API route<br/>[route.ts]"]
end

subgraph group_data["Services and persistence"]
  node_kanbanservice["Kanban service<br/>[kanban.ts]"]
  node_projectservice["Project service<br/>[projects.ts]"]
  node_taskservice["Task service<br/>[tasks.ts]"]
  node_dashboardservice["Dashboard service<br/>[dashboard.ts]"]
  node_analyticsservice["Analytics service<br/>[analytics.ts]"]
  node_prisma["Prisma client<br/>[prisma.ts]"]
  node_projectqueries["Project queries<br/>[projects.ts]"]
  node_taskqueries["Task queries<br/>[tasks.ts]"]
  node_projectmapper["Project mapper<br/>[project.ts]"]
  node_taskmapper["Task mapper<br/>[task.ts]"]
  node_projectdto["Project and task DTOs<br/>[dto.ts]"]
end

node_user(("Workspace user"))
node_postgres[("PostgreSQL")]

node_projectpage -->|"loads projects"| node_projectservice
node_projectpage -->|"parses filters"| node_filters
node_projectpage -->|"uses page size"| node_filterconstants
node_projectpage -->|"renders forms"| node_projectforms
node_projectpage -->|"renders pagination"| node_pagination
node_taskpage -->|"loads tasks"| node_taskservice
node_taskpage -->|"parses filters"| node_filters
node_taskpage -->|"uses page size"| node_filterconstants
node_taskpage -->|"renders task UI"| node_taskforms
node_taskpage -->|"renders pagination"| node_pagination
node_projectservice -->|"queries database"| node_prisma
node_projectservice -->|"uses query helpers"| node_projectqueries
node_projectservice -->|"maps results"| node_projectmapper
node_taskservice -->|"queries database"| node_prisma
node_taskservice -->|"builds query"| node_taskqueries
node_taskservice -->|"maps task results"| node_taskmapper
node_taskservice -->|"maps project options"| node_projectmapper
node_taskservice -->|"returns DTO results"| node_projectdto
node_projectservice -->|"returns DTO results"| node_projectdto
node_projectactions -->|"uses client"| node_prisma
node_projectactions -.->|"submitted by forms"| node_projectforms
node_taskactions -->|"uses client"| node_prisma
node_taskactions -.->|"submitted by forms"| node_taskforms
node_dashboard -->|"loads metrics"| node_dashboardservice
node_analytics -->|"loads analytics"| node_analyticsservice
node_analytics -->|"renders charts"| node_analyticsviz
node_kanbanpage -->|"loads initial tasks"| node_kanbanservice
node_kanbanpage -->|"renders board"| node_board
node_board -->|"queries tasks"| node_kanbanhook
node_kanbanhook -->|"fetches tasks"| node_kanbanapi
node_kanbanroute -->|"routes to service"| node_kanbanservice
node_kanbanservice -->|"queries database"| node_prisma
node_kanbanservice -->|"maps tasks"| node_taskmapper
node_prisma -->|"connects through adapter"| node_postgres
node_user -->|"manages projects"| node_projectpage
node_user -->|"manages tasks"| node_taskpage
node_user -->|"moves tasks"| node_kanbanpage
node_user -->|"views analytics"| node_analytics

click node_dashboard "https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/dashboard/page.tsx"
click node_analytics "https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/analytics/page.tsx"
click node_analyticsviz "https://github.com/mshchebetiuk/devboard/tree/main/src/components/analytics"
click node_projectpage "https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/projects/page.tsx"
click node_projectforms "https://github.com/mshchebetiuk/devboard/tree/main/src/components/projects"
click node_taskpage "https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/tasks/page.tsx"
click node_taskforms "https://github.com/mshchebetiuk/devboard/tree/main/src/components/tasks"
click node_projectactions "https://github.com/mshchebetiuk/devboard/blob/main/src/actions/projects.ts"
click node_taskactions "https://github.com/mshchebetiuk/devboard/blob/main/src/actions/tasks.ts"
click node_filters "https://github.com/mshchebetiuk/devboard/blob/main/src/lib/filters.ts"
click node_filterconstants "https://github.com/mshchebetiuk/devboard/blob/main/src/constants/filters.ts"
click node_pagination "https://github.com/mshchebetiuk/devboard/blob/main/src/components/ui/Pagination.tsx"
click node_kanbanpage "https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/kanban/page.tsx"
click node_board "https://github.com/mshchebetiuk/devboard/blob/main/src/components/kanban/KanbanBoard.tsx"
click node_kanbanhook "https://github.com/mshchebetiuk/devboard/blob/main/src/hooks/use-kanban-tasks.ts"
click node_kanbanapi "https://github.com/mshchebetiuk/devboard/blob/main/src/lib/api/kanban.ts"
click node_kanbanroute "https://github.com/mshchebetiuk/devboard/blob/main/src/app/api/kanban/route.ts"
click node_kanbanservice "https://github.com/mshchebetiuk/devboard/blob/main/src/services/kanban.ts"
click node_projectservice "https://github.com/mshchebetiuk/devboard/blob/main/src/services/projects.ts"
click node_taskservice "https://github.com/mshchebetiuk/devboard/blob/main/src/services/tasks.ts"
click node_dashboardservice "https://github.com/mshchebetiuk/devboard/blob/main/src/services/dashboard.ts"
click node_analyticsservice "https://github.com/mshchebetiuk/devboard/blob/main/src/services/analytics.ts"
click node_prisma "https://github.com/mshchebetiuk/devboard/blob/main/src/lib/prisma.ts"
click node_projectqueries "https://github.com/mshchebetiuk/devboard/blob/main/src/lib/queries/projects.ts"
click node_taskqueries "https://github.com/mshchebetiuk/devboard/blob/main/src/lib/queries/tasks.ts"
click node_projectmapper "https://github.com/mshchebetiuk/devboard/blob/main/src/lib/mappers/project.ts"
click node_taskmapper "https://github.com/mshchebetiuk/devboard/blob/main/src/lib/mappers/task.ts"
click node_projectdto "https://github.com/mshchebetiuk/devboard/blob/main/src/types/dto.ts"

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_dashboard,node_analytics,node_analyticsviz,node_user toneBlue
class node_projectpage,node_projectforms,node_taskpage,node_taskforms,node_projectactions,node_taskactions,node_filters,node_filterconstants,node_pagination,node_postgres toneAmber
class node_kanbanpage,node_board,node_kanbanhook,node_kanbanapi,node_kanbanroute toneMint
class node_kanbanservice,node_projectservice,node_taskservice,node_dashboardservice,node_analyticsservice,node_prisma,node_projectqueries,node_taskqueries,node_projectmapper,node_taskmapper,node_projectdto toneRose
```

## Components

### Dashboard experience

- [Dashboard metrics](https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/dashboard/page.tsx): `src/app/(dashboard)/dashboard/page.tsx`
- [Analytics view](https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/analytics/page.tsx): `src/app/(dashboard)/analytics/page.tsx`
- [Analytics visualizations](https://github.com/mshchebetiuk/devboard/tree/main/src/components/analytics): `src/components/analytics`

### Project and task management

- [Project workspace](https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/projects/page.tsx): `src/app/(dashboard)/projects/page.tsx`
- [Project forms](https://github.com/mshchebetiuk/devboard/tree/main/src/components/projects): `src/components/projects`
- [Task workspace](https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/tasks/page.tsx): `src/app/(dashboard)/tasks/page.tsx`
- [Task forms and cards](https://github.com/mshchebetiuk/devboard/tree/main/src/components/tasks): `src/components/tasks`
- [Project actions](https://github.com/mshchebetiuk/devboard/blob/main/src/actions/projects.ts): `src/actions/projects.ts`
- [Task actions](https://github.com/mshchebetiuk/devboard/blob/main/src/actions/tasks.ts): `src/actions/tasks.ts`
- [Filter utilities](https://github.com/mshchebetiuk/devboard/blob/main/src/lib/filters.ts): `src/lib/filters.ts`
- [Filter options](https://github.com/mshchebetiuk/devboard/blob/main/src/constants/filters.ts): `src/constants/filters.ts`
- [Pagination controls](https://github.com/mshchebetiuk/devboard/blob/main/src/components/ui/Pagination.tsx): `src/components/ui/Pagination.tsx`

### Kanban workflow

- [Kanban page](https://github.com/mshchebetiuk/devboard/blob/main/src/app/(dashboard)/kanban/page.tsx): `src/app/(dashboard)/kanban/page.tsx`
- [Kanban board](https://github.com/mshchebetiuk/devboard/blob/main/src/components/kanban/KanbanBoard.tsx): `src/components/kanban/KanbanBoard.tsx`
- [Kanban task query](https://github.com/mshchebetiuk/devboard/blob/main/src/hooks/use-kanban-tasks.ts): `src/hooks/use-kanban-tasks.ts`
- [Kanban API client](https://github.com/mshchebetiuk/devboard/blob/main/src/lib/api/kanban.ts): `src/lib/api/kanban.ts`
- [Kanban API route](https://github.com/mshchebetiuk/devboard/blob/main/src/app/api/kanban/route.ts): `src/app/api/kanban/route.ts`

### Services and persistence

- [Kanban service](https://github.com/mshchebetiuk/devboard/blob/main/src/services/kanban.ts): `src/services/kanban.ts`
- [Project service](https://github.com/mshchebetiuk/devboard/blob/main/src/services/projects.ts): `src/services/projects.ts`
- [Task service](https://github.com/mshchebetiuk/devboard/blob/main/src/services/tasks.ts): `src/services/tasks.ts`
- [Dashboard service](https://github.com/mshchebetiuk/devboard/blob/main/src/services/dashboard.ts): `src/services/dashboard.ts`
- [Analytics service](https://github.com/mshchebetiuk/devboard/blob/main/src/services/analytics.ts): `src/services/analytics.ts`
- [Prisma client](https://github.com/mshchebetiuk/devboard/blob/main/src/lib/prisma.ts): `src/lib/prisma.ts`
- [Project queries](https://github.com/mshchebetiuk/devboard/blob/main/src/lib/queries/projects.ts): `src/lib/queries/projects.ts`
- [Task queries](https://github.com/mshchebetiuk/devboard/blob/main/src/lib/queries/tasks.ts): `src/lib/queries/tasks.ts`
- [Project mapper](https://github.com/mshchebetiuk/devboard/blob/main/src/lib/mappers/project.ts): `src/lib/mappers/project.ts`
- [Task mapper](https://github.com/mshchebetiuk/devboard/blob/main/src/lib/mappers/task.ts): `src/lib/mappers/task.ts`
- [Project and task DTOs](https://github.com/mshchebetiuk/devboard/blob/main/src/types/dto.ts): `src/types/dto.ts`

### Other components

- **Workspace user**
- **PostgreSQL**

## Connections

- Project workspace → Project service: loads projects (evidence: `src/app/(dashboard)/projects/page.tsx`)
- Project workspace → Filter utilities: parses filters (evidence: `src/app/(dashboard)/projects/page.tsx`)
- Project workspace → Filter options: uses page size (evidence: `src/app/(dashboard)/projects/page.tsx`)
- Project workspace → Project forms: renders forms (evidence: `src/app/(dashboard)/projects/page.tsx`)
- Project workspace → Pagination controls: renders pagination (evidence: `src/app/(dashboard)/projects/page.tsx`)
- Task workspace → Task service: loads tasks (evidence: `src/app/(dashboard)/tasks/page.tsx`)
- Task workspace → Filter utilities: parses filters (evidence: `src/app/(dashboard)/tasks/page.tsx`)
- Task workspace → Filter options: uses page size (evidence: `src/app/(dashboard)/tasks/page.tsx`)
- Task workspace → Task forms and cards: renders task UI (evidence: `src/app/(dashboard)/tasks/page.tsx`)
- Task workspace → Pagination controls: renders pagination (evidence: `src/app/(dashboard)/tasks/page.tsx`)
- Project service → Prisma client: queries database (evidence: `src/services/projects.ts`)
- Project service → Project queries: uses query helpers (evidence: `src/services/projects.ts`)
- Project service → Project mapper: maps results (evidence: `src/services/projects.ts`)
- Task service → Prisma client: queries database (evidence: `src/services/tasks.ts`)
- Task service → Task queries: builds query (evidence: `src/services/tasks.ts`)
- Task service → Task mapper: maps task results (evidence: `src/services/tasks.ts`)
- Task service → Project mapper: maps project options (evidence: `src/services/tasks.ts`)
- Task service → Project and task DTOs: returns DTO results
- Project service → Project and task DTOs: returns DTO results
- Project actions → Prisma client: uses client (evidence: `src/actions/projects.ts`)
- Project actions → Project forms: submitted by forms
- Task actions → Prisma client: uses client (evidence: `src/actions/tasks.ts`)
- Task actions → Task forms and cards: submitted by forms
- Dashboard metrics → Dashboard service: loads metrics (evidence: `src/app/(dashboard)/dashboard/page.tsx`)
- Analytics view → Analytics service: loads analytics (evidence: `src/app/(dashboard)/analytics/page.tsx`)
- Analytics view → Analytics visualizations: renders charts (evidence: `src/app/(dashboard)/analytics/page.tsx`)
- Kanban page → Kanban service: loads initial tasks (evidence: `src/app/(dashboard)/kanban/page.tsx`)
- Kanban page → Kanban board: renders board (evidence: `src/app/(dashboard)/kanban/page.tsx`)
- Kanban board → Kanban task query: queries tasks (evidence: `src/components/kanban/KanbanBoard.tsx`)
- Kanban task query → Kanban API client: fetches tasks (evidence: `src/hooks/use-kanban-tasks.ts`)
- Kanban API route → Kanban service: routes to service (evidence: `src/app/api/kanban/route.ts`)
- Kanban service → Prisma client: queries database (evidence: `src/services/kanban.ts`)
- Kanban service → Task mapper: maps tasks (evidence: `src/services/kanban.ts`)
- Prisma client → PostgreSQL: connects through adapter (evidence: `README.md`)
- Workspace user → Project workspace: manages projects (evidence: `README.md`)
- Workspace user → Task workspace: manages tasks (evidence: `README.md`)
- Workspace user → Kanban page: moves tasks (evidence: `README.md`)
- Workspace user → Analytics view: views analytics (evidence: `README.md`)
