# truonglehuyhoang/taskamina architecture

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

- Interactive diagram: https://gitdiagram.com/truonglehuyhoang/taskamina
- Repository: https://github.com/truonglehuyhoang/taskamina

## Overview

Taskamina is a local-first daily planner for balancing planned work and rest against an estimated energy budget. The main workflow is selecting a day, recording a check-in, planning and reordering work or rest, completing items, then recording work feedback and reviewing the activity log. The React page coordinates user actions through the API client; FastAPI routes apply domain logic and persist data in SQLite. The README also documents a Windows desktop beta and configurable local data folder. Desktop wiring and unsampled route internals are not inferred from the excerpts.

Main entry points: [`client/src/pages/Index.tsx`](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/pages/Index.tsx) (Daily plan page), [`server/app/database.py`](https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/database.py) (SQLite access), [`server/main.py`](https://github.com/truonglehuyhoang/taskamina/blob/main/server/main.py) (FastAPI application), [`server/app/routers/tasks.py`](https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/routers/tasks.py) (Task routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_planning_ui["Daily planning UI"]
  node_index_page["Daily plan page<br/>[Index.tsx]"]
  node_checkin_ui["Daily check-in"]
  node_task_form["Task entry<br/>[AddTaskForm.tsx]"]
  node_task_list["Task list<br/>[TaskList.tsx]"]
  node_energy_bar["Energy display<br/>[EnergyBar.tsx]"]
  node_rest_panel["Rest planning<br/>[RestPanel.tsx]"]
  node_feedback_ui["Task feedback"]
  node_activity_ui["Activity history<br/>[ActivityLog.tsx]"]
end

subgraph group_client_api["Client API"]
  node_api_client["HTTP API client<br/>[api.ts]"]
  node_api_types["Planning data types<br/>[planning.ts]"]
end

subgraph group_backend["Planning backend"]
  node_api_app["FastAPI application<br/>[main.py]"]
  node_day_plans["Day plan routes<br/>[day_plans.py]"]
  node_tasks["Task routes<br/>[tasks.py]"]
  node_activity_routes["Activity log routes<br/>[activity_logs.py]"]
  node_energy_logic["Energy estimates<br/>[energy.py]"]
  node_activity_logic["Activity recording<br/>[activity.py]"]
  node_schemas["Request schemas<br/>[schemas.py]"]
end

subgraph group_local_runtime["Local runtime"]
  node_database["SQLite access<br/>[database.py]"]
  node_sqlite[("Local database")]
  node_desktop["Desktop launcher<br/>[desktop.py]"]
  node_storage_setup["Data folder setup<br/>[storage_setup.py]"]
end

node_user(("Planner"))

node_user -->|"uses"| node_index_page
node_index_page -->|"opens"| node_checkin_ui
node_index_page -->|"renders"| node_task_form
node_index_page -->|"renders"| node_task_list
node_index_page -->|"renders"| node_energy_bar
node_index_page -->|"renders"| node_rest_panel
node_index_page -->|"opens"| node_feedback_ui
node_index_page -->|"renders"| node_activity_ui
node_index_page -->|"calls"| node_api_client
node_api_client -->|"sends requests"| node_api_app
node_api_app -->|"dispatches"| node_day_plans
node_api_app -->|"dispatches"| node_tasks
node_api_app -->|"dispatches"| node_activity_routes
node_day_plans -->|"reads/writes"| node_database
node_tasks -->|"reads/writes"| node_database
node_activity_routes -->|"reads"| node_database
node_tasks -->|"computes estimates"| node_energy_logic
node_tasks -->|"records events"| node_activity_logic
node_day_plans -->|"records events"| node_activity_logic
node_activity_logic -->|"writes logs"| node_database
node_database -->|"reads/writes"| node_sqlite

click node_index_page "https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/pages/Index.tsx"
click node_checkin_ui "https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/DailyCheckInDialog.tsx"
click node_task_form "https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/AddTaskForm.tsx"
click node_task_list "https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/TaskList.tsx"
click node_energy_bar "https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/EnergyBar.tsx"
click node_rest_panel "https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/RestPanel.tsx"
click node_feedback_ui "https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/TaskFeedbackDialog.tsx"
click node_activity_ui "https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/ActivityLog.tsx"
click node_api_client "https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/lib/api.ts"
click node_api_types "https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/types/planning.ts"
click node_api_app "https://github.com/truonglehuyhoang/taskamina/blob/main/server/main.py"
click node_day_plans "https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/routers/day_plans.py"
click node_tasks "https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/routers/tasks.py"
click node_activity_routes "https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/routers/activity_logs.py"
click node_energy_logic "https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/energy.py"
click node_activity_logic "https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/activity.py"
click node_schemas "https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/schemas.py"
click node_database "https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/database.py"
click node_desktop "https://github.com/truonglehuyhoang/taskamina/blob/main/server/desktop.py"
click node_storage_setup "https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/storage_setup.py"

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_index_page,node_checkin_ui,node_task_form,node_task_list,node_energy_bar,node_rest_panel,node_feedback_ui,node_activity_ui toneBlue
class node_api_client,node_api_types toneAmber
class node_api_app,node_day_plans,node_tasks,node_activity_routes,node_energy_logic,node_activity_logic,node_schemas toneMint
class node_database,node_sqlite,node_desktop,node_storage_setup toneRose
class node_user toneIndigo
```

## Components

### Daily planning UI

- [Daily plan page](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/pages/Index.tsx): `client/src/pages/Index.tsx`
- [Daily check-in](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/DailyCheckInDialog.tsx): `client/src/components/DailyCheckInDialog.tsx`
- [Task entry](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/AddTaskForm.tsx): `client/src/components/AddTaskForm.tsx`
- [Task list](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/TaskList.tsx): `client/src/components/TaskList.tsx`
- [Energy display](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/EnergyBar.tsx): `client/src/components/EnergyBar.tsx`
- [Rest planning](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/RestPanel.tsx): `client/src/components/RestPanel.tsx`
- [Task feedback](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/TaskFeedbackDialog.tsx): `client/src/components/TaskFeedbackDialog.tsx`
- [Activity history](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/components/ActivityLog.tsx): `client/src/components/ActivityLog.tsx`

### Client API

- [HTTP API client](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/lib/api.ts): `client/src/lib/api.ts`
- [Planning data types](https://github.com/truonglehuyhoang/taskamina/blob/main/client/src/types/planning.ts): `client/src/types/planning.ts`

### Planning backend

- [FastAPI application](https://github.com/truonglehuyhoang/taskamina/blob/main/server/main.py): `server/main.py`
- [Day plan routes](https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/routers/day_plans.py): `server/app/routers/day_plans.py`
- [Task routes](https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/routers/tasks.py): `server/app/routers/tasks.py`
- [Activity log routes](https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/routers/activity_logs.py): `server/app/routers/activity_logs.py`
- [Energy estimates](https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/energy.py): `server/app/energy.py`
- [Activity recording](https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/activity.py): `server/app/activity.py`
- [Request schemas](https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/schemas.py): `server/app/schemas.py`

### Local runtime

- [SQLite access](https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/database.py): `server/app/database.py`
- **Local database**
- [Desktop launcher](https://github.com/truonglehuyhoang/taskamina/blob/main/server/desktop.py): `server/desktop.py`
- [Data folder setup](https://github.com/truonglehuyhoang/taskamina/blob/main/server/app/storage_setup.py): `server/app/storage_setup.py`

### Other components

- **Planner**

## Connections

- Planner → Daily plan page: uses
- Daily plan page → Daily check-in: opens
- Daily plan page → Task entry: renders
- Daily plan page → Task list: renders
- Daily plan page → Energy display: renders
- Daily plan page → Rest planning: renders
- Daily plan page → Task feedback: opens
- Daily plan page → Activity history: renders
- Daily plan page → HTTP API client: calls
- HTTP API client → FastAPI application: sends requests
- FastAPI application → Day plan routes: dispatches
- FastAPI application → Task routes: dispatches
- FastAPI application → Activity log routes: dispatches
- Day plan routes → SQLite access: reads/writes
- Task routes → SQLite access: reads/writes
- Activity log routes → SQLite access: reads
- Task routes → Energy estimates: computes estimates
- Task routes → Activity recording: records events
- Day plan routes → Activity recording: records events
- Activity recording → SQLite access: writes logs
- SQLite access → Local database: reads/writes
