# nathanpatrzyk/dot architecture

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

- Interactive diagram: https://gitdiagram.com/nathanpatrzyk/dot
- Repository: https://github.com/nathanpatrzyk/dot

## Overview

Dot is a personal task organizer: users manage categories and tasks, with authentication, account lifecycle controls, and an optional weather widget. The graph follows the sampled task/category service and repository flow; the tree identifies additional capabilities, but their internal wiring was not sampled, so uncertain calls are omitted.

Main entry points: [`src/actions/tasks.ts`](https://github.com/nathanpatrzyk/dot/blob/main/src/actions/tasks.ts) (Task actions), [`src/actions/categories.ts`](https://github.com/nathanpatrzyk/dot/blob/main/src/actions/categories.ts) (Category actions), [`src/components/tasks/task-container.tsx`](https://github.com/nathanpatrzyk/dot/blob/main/src/components/tasks/task-container.tsx) (Task interface), [`src/components/categories/category-container.tsx`](https://github.com/nathanpatrzyk/dot/blob/main/src/components/categories/category-container.tsx) (Category interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_task_ui["Task interface<br/>[task-container.tsx]"]
  node_task_hook["Task interactions<br/>[use-tasks.ts]"]
  node_category_ui["Category interface"]
  node_category_pages["Category pages<br/>[page.tsx]"]
  node_task_page["Category task page<br/>[page.tsx]"]
  node_weather_ui["Weather widget<br/>[weather-widget.tsx]"]
end

subgraph group_domain["Task and category domain"]
  node_task_actions["Task actions<br/>[tasks.ts]"]
  node_task_query["Task query<br/>[tasks.ts]"]
  node_task_service["Task service<br/>[tasks.service.ts]"]
  node_category_actions["Category actions<br/>[categories.ts]"]
  node_category_service["Category service"]
end

subgraph group_identity["Identity and account"]
  node_auth_pages["Login and reactivation<br/>[page.tsx]"]
  node_auth_route["Auth endpoint<br/>[route.ts]"]
  node_auth_config["Auth configuration<br/>[auth.ts]"]
  node_session_guard["Session guard<br/>[require-session.ts]"]
  node_user_actions["User actions<br/>[users.ts]"]
  node_deletion_service["Deletion service"]
  node_worker["Scheduled worker<br/>[index.ts]"]
end

subgraph group_persistence["Persistence and integrations"]
  node_category_repo["Category repository"]
  node_task_repo["Task repository"]
  node_deletion_repo["Deletion repository"]
  node_adapter_select["Adapter selection"]
  node_db_schema["Database schema<br/>[schema.ts]"]
  node_database[("Application database")]
  node_weather_route["Weather endpoint<br/>[route.ts]"]
end

node_user(("User"))
node_weather_provider["Weather provider"]

node_user -->|"uses"| node_task_ui
node_user -->|"uses"| node_category_ui
node_task_ui -->|"handles tasks"| node_task_hook
node_task_hook -->|"submits changes"| node_task_actions
node_category_ui -->|"submits changes"| node_category_actions
node_category_pages -->|"renders"| node_category_ui
node_task_page -->|"renders"| node_task_ui
node_task_page -->|"loads tasks"| node_task_query
node_task_query -->|"requests tasks"| node_task_service
node_task_actions -->|"requires session"| node_session_guard
node_task_actions -->|"invokes"| node_task_service
node_task_service -->|"uses"| node_task_repo
node_category_actions -->|"requires session"| node_session_guard
node_category_actions -->|"invokes"| node_category_service
node_category_service -->|"uses"| node_category_repo
node_category_repo -->|"reads and writes"| node_database
node_task_repo -->|"reads and writes"| node_database
node_db_schema -->|"defines tables"| node_database
node_auth_pages -->|"authenticates"| node_auth_route
node_auth_route -->|"dispatches to"| node_auth_config
node_user_actions -->|"requires session"| node_session_guard
node_worker -->|"schedules purge"| node_deletion_service
node_deletion_service -->|"uses"| node_deletion_repo
node_deletion_repo -->|"reads and writes"| node_database
node_weather_ui -.->|"requests forecast"| node_weather_route
node_weather_route -.->|"fetches forecast"| node_weather_provider
node_adapter_select -->|"selects adapter"| node_task_repo
node_adapter_select -->|"selects adapter"| node_category_repo

click node_task_ui "https://github.com/nathanpatrzyk/dot/blob/main/src/components/tasks/task-container.tsx"
click node_task_hook "https://github.com/nathanpatrzyk/dot/blob/main/src/hooks/use-tasks.ts"
click node_category_ui "https://github.com/nathanpatrzyk/dot/blob/main/src/components/categories/category-container.tsx"
click node_category_pages "https://github.com/nathanpatrzyk/dot/blob/main/src/app/(private)/categories/page.tsx"
click node_task_page "https://github.com/nathanpatrzyk/dot/blob/main/src/app/(private)/categories/%5Bslug%5D/tasks/page.tsx"
click node_weather_ui "https://github.com/nathanpatrzyk/dot/blob/main/src/components/shared/weather-widget.tsx"
click node_task_actions "https://github.com/nathanpatrzyk/dot/blob/main/src/actions/tasks.ts"
click node_task_query "https://github.com/nathanpatrzyk/dot/blob/main/src/queries/tasks.ts"
click node_task_service "https://github.com/nathanpatrzyk/dot/blob/main/src/core/services/tasks.service.ts"
click node_category_actions "https://github.com/nathanpatrzyk/dot/blob/main/src/actions/categories.ts"
click node_category_service "https://github.com/nathanpatrzyk/dot/blob/main/src/core/services/categories.service.ts"
click node_auth_pages "https://github.com/nathanpatrzyk/dot/blob/main/src/app/(public)/login/page.tsx"
click node_auth_route "https://github.com/nathanpatrzyk/dot/blob/main/src/app/api/auth/%5B...all%5D/route.ts"
click node_auth_config "https://github.com/nathanpatrzyk/dot/blob/main/src/lib/auth.ts"
click node_session_guard "https://github.com/nathanpatrzyk/dot/blob/main/src/lib/require-session.ts"
click node_user_actions "https://github.com/nathanpatrzyk/dot/blob/main/src/actions/users.ts"
click node_deletion_service "https://github.com/nathanpatrzyk/dot/blob/main/src/core/services/users-deletion.service.ts"
click node_worker "https://github.com/nathanpatrzyk/dot/blob/main/worker/index.ts"
click node_category_repo "https://github.com/nathanpatrzyk/dot/blob/main/src/adapters/shared/categories.repository.ts"
click node_task_repo "https://github.com/nathanpatrzyk/dot/blob/main/src/adapters/shared/tasks.repository.ts"
click node_deletion_repo "https://github.com/nathanpatrzyk/dot/blob/main/src/adapters/shared/users-deletion.repository.ts"
click node_adapter_select "https://github.com/nathanpatrzyk/dot/blob/main/src/adapters-index-cloudflare.ts"
click node_db_schema "https://github.com/nathanpatrzyk/dot/blob/main/src/db/schema.ts"
click node_weather_route "https://github.com/nathanpatrzyk/dot/blob/main/src/app/api/weather/route.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_task_ui,node_task_hook,node_category_ui,node_category_pages,node_task_page,node_weather_ui,node_user toneBlue
class node_task_actions,node_task_query,node_task_service,node_category_actions,node_category_service toneAmber
class node_auth_pages,node_auth_route,node_auth_config,node_session_guard,node_user_actions,node_deletion_service,node_worker toneMint
class node_category_repo,node_task_repo,node_deletion_repo,node_adapter_select,node_db_schema,node_database,node_weather_route toneRose
class node_weather_provider toneIndigo
```

## Components

### User experience

- [Task interface](https://github.com/nathanpatrzyk/dot/blob/main/src/components/tasks/task-container.tsx): `src/components/tasks/task-container.tsx`
- [Task interactions](https://github.com/nathanpatrzyk/dot/blob/main/src/hooks/use-tasks.ts): `src/hooks/use-tasks.ts`
- [Category interface](https://github.com/nathanpatrzyk/dot/blob/main/src/components/categories/category-container.tsx): `src/components/categories/category-container.tsx`
- [Category pages](https://github.com/nathanpatrzyk/dot/blob/main/src/app/(private)/categories/page.tsx): `src/app/(private)/categories/page.tsx`
- [Category task page](https://github.com/nathanpatrzyk/dot/blob/main/src/app/(private)/categories/%5Bslug%5D/tasks/page.tsx): `src/app/(private)/categories/[slug]/tasks/page.tsx`
- [Weather widget](https://github.com/nathanpatrzyk/dot/blob/main/src/components/shared/weather-widget.tsx): `src/components/shared/weather-widget.tsx`

### Task and category domain

- [Task actions](https://github.com/nathanpatrzyk/dot/blob/main/src/actions/tasks.ts): `src/actions/tasks.ts`
- [Task query](https://github.com/nathanpatrzyk/dot/blob/main/src/queries/tasks.ts): `src/queries/tasks.ts`
- [Task service](https://github.com/nathanpatrzyk/dot/blob/main/src/core/services/tasks.service.ts): `src/core/services/tasks.service.ts`
- [Category actions](https://github.com/nathanpatrzyk/dot/blob/main/src/actions/categories.ts): `src/actions/categories.ts`
- [Category service](https://github.com/nathanpatrzyk/dot/blob/main/src/core/services/categories.service.ts): `src/core/services/categories.service.ts`

### Identity and account

- [Login and reactivation](https://github.com/nathanpatrzyk/dot/blob/main/src/app/(public)/login/page.tsx): `src/app/(public)/login/page.tsx`
- [Auth endpoint](https://github.com/nathanpatrzyk/dot/blob/main/src/app/api/auth/%5B...all%5D/route.ts): `src/app/api/auth/[...all]/route.ts`
- [Auth configuration](https://github.com/nathanpatrzyk/dot/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [Session guard](https://github.com/nathanpatrzyk/dot/blob/main/src/lib/require-session.ts): `src/lib/require-session.ts`
- [User actions](https://github.com/nathanpatrzyk/dot/blob/main/src/actions/users.ts): `src/actions/users.ts`
- [Deletion service](https://github.com/nathanpatrzyk/dot/blob/main/src/core/services/users-deletion.service.ts): `src/core/services/users-deletion.service.ts`
- [Scheduled worker](https://github.com/nathanpatrzyk/dot/blob/main/worker/index.ts): `worker/index.ts`

### Persistence and integrations

- [Category repository](https://github.com/nathanpatrzyk/dot/blob/main/src/adapters/shared/categories.repository.ts): `src/adapters/shared/categories.repository.ts`
- [Task repository](https://github.com/nathanpatrzyk/dot/blob/main/src/adapters/shared/tasks.repository.ts): `src/adapters/shared/tasks.repository.ts`
- [Deletion repository](https://github.com/nathanpatrzyk/dot/blob/main/src/adapters/shared/users-deletion.repository.ts): `src/adapters/shared/users-deletion.repository.ts`
- [Adapter selection](https://github.com/nathanpatrzyk/dot/blob/main/src/adapters-index-cloudflare.ts): `src/adapters-index-cloudflare.ts`
- [Database schema](https://github.com/nathanpatrzyk/dot/blob/main/src/db/schema.ts): `src/db/schema.ts`
- **Application database**
- [Weather endpoint](https://github.com/nathanpatrzyk/dot/blob/main/src/app/api/weather/route.ts): `src/app/api/weather/route.ts`

### Other components

- **User**
- **Weather provider**

## Connections

- User → Task interface: uses
- User → Category interface: uses
- Task interface → Task interactions: handles tasks
- Task interactions → Task actions: submits changes
- Category interface → Category actions: submits changes
- Category pages → Category interface: renders
- Category task page → Task interface: renders
- Category task page → Task query: loads tasks
- Task query → Task service: requests tasks
- Task actions → Session guard: requires session
- Task actions → Task service: invokes
- Task service → Task repository: uses
- Category actions → Session guard: requires session
- Category actions → Category service: invokes
- Category service → Category repository: uses
- Category repository → Application database: reads and writes
- Task repository → Application database: reads and writes
- Database schema → Application database: defines tables
- Login and reactivation → Auth endpoint: authenticates
- Auth endpoint → Auth configuration: dispatches to
- User actions → Session guard: requires session
- Scheduled worker → Deletion service: schedules purge
- Deletion service → Deletion repository: uses
- Deletion repository → Application database: reads and writes
- Weather widget → Weather endpoint: requests forecast
- Weather endpoint → Weather provider: fetches forecast
- Adapter selection → Task repository: selects adapter
- Adapter selection → Category repository: selects adapter
