# loganoberk/taskmanager architecture

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

- Interactive diagram: https://gitdiagram.com/loganoberk/taskmanager
- Repository: https://github.com/loganoberk/taskmanager

## Overview

This is a command-line to-do list manager organized around dated lists and the tasks stored in them. A user chooses a list operation, then can create, remove, or open a list; within an open list, they can add, remove, or edit tasks. The application loads and saves manager state through a local text file. The README is empty, and Task and TaskList implementations were not sampled, so their internal behavior and some dependencies are not detailed here.

Main entry points: [`taskmanager/src/core/TaskManagerApp.cpp`](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/TaskManagerApp.cpp) (Application loop), [`taskmanager/src/ui/UI.cpp`](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/ui/UI.cpp) (Menus and input), [`taskmanager/src/core/TaskListManager.cpp`](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/TaskListManager.cpp) (List manager), [`taskmanager/src/core/TaskList.cpp`](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/TaskList.cpp) (Dated task list)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_main["Program entry<br/>[Main.cpp]"]
  node_app["Application loop<br/>[TaskManagerApp.cpp]"]
end

subgraph group_interaction["Command-line interface"]
  node_ui["Menus and input<br/>[UI.cpp]"]
  node_strings["String helpers<br/>[String.util.cpp]"]
end

subgraph group_domain["Task domain"]
  node_manager["List manager"]
  node_date["Date value<br/>[Date.cpp]"]
  node_tasklist["Dated task list<br/>[TaskList.cpp]"]
  node_task["Task<br/>[Task.cpp]"]
end

subgraph group_persistence["Persistence"]
  node_datafile["Saved task data"]
end

node_user(("User"))

node_user -->|"starts"| node_main
node_main -->|"runs"| node_app
node_app -->|"displays menus"| node_ui
node_ui -->|"prompts"| node_user
node_ui -->|"normalizes text"| node_strings
node_app -->|"reads choices"| node_ui
node_app -->|"parses dates"| node_date
node_app -->|"dispatches list actions"| node_manager
node_app -->|"reads and writes"| node_datafile
node_app -->|"loads and saves"| node_manager
node_manager -->|"creates and opens"| node_tasklist
node_manager -->|"reports outcomes"| node_ui
node_manager -->|"indexes by date"| node_date
node_manager -->|"serializes lists"| node_tasklist
node_tasklist -->|"displays list menu"| node_ui
node_tasklist -->|"manages tasks"| node_task
node_tasklist -->|"opens task editor"| node_ui

click node_main "https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/app/Main.cpp"
click node_app "https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/TaskManagerApp.cpp"
click node_ui "https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/ui/UI.cpp"
click node_strings "https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/utils/String.util.cpp"
click node_manager "https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/TaskListManager.cpp"
click node_date "https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/Date.cpp"
click node_tasklist "https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/TaskList.cpp"
click node_task "https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/Task.cpp"

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_main,node_app,node_user toneBlue
class node_ui,node_strings toneAmber
class node_manager,node_date,node_tasklist,node_task toneMint
class node_datafile toneRose
```

## Components

### Application entry

- [Program entry](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/app/Main.cpp): `taskmanager/src/app/Main.cpp`
- [Application loop](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/TaskManagerApp.cpp): `taskmanager/src/core/TaskManagerApp.cpp`

### Command-line interface

- [Menus and input](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/ui/UI.cpp): `taskmanager/src/ui/UI.cpp`
- [String helpers](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/utils/String.util.cpp): `taskmanager/src/utils/String.util.cpp`

### Task domain

- [List manager](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/TaskListManager.cpp): `taskmanager/src/core/TaskListManager.cpp`
- [Date value](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/Date.cpp): `taskmanager/src/core/Date.cpp`
- [Dated task list](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/TaskList.cpp): `taskmanager/src/core/TaskList.cpp`
- [Task](https://github.com/loganoberk/taskmanager/blob/main/taskmanager/src/core/Task.cpp): `taskmanager/src/core/Task.cpp`

### Persistence

- **Saved task data**

### Other components

- **User**

## Connections

- User → Program entry: starts
- Program entry → Application loop: runs
- Application loop → Menus and input: displays menus
- Menus and input → User: prompts
- Menus and input → String helpers: normalizes text
- Application loop → Menus and input: reads choices
- Application loop → Date value: parses dates
- Application loop → List manager: dispatches list actions
- Application loop → Saved task data: reads and writes
- Application loop → List manager: loads and saves
- List manager → Dated task list: creates and opens
- List manager → Menus and input: reports outcomes
- List manager → Date value: indexes by date
- List manager → Dated task list: serializes lists
- Dated task list → Menus and input: displays list menu
- Dated task list → Task: manages tasks
- Dated task list → Menus and input: opens task editor
