# deolinjaffens/task-tracker-cli architecture

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

- Interactive diagram: https://gitdiagram.com/deolinjaffens/task-tracker-cli
- Repository: https://github.com/deolinjaffens/task-tracker-cli

## Overview

Task Tracker is a standard-library CLI for creating, editing, deleting, marking, and filtering tasks. The workflow starts with a command parsed in `main.py`, passes through the controller and service, and reaches JSON-backed persistence through the repository. The service validates descriptions, timestamps tasks, and applies statuses. The README describes `tasks.json`, but the sampled storage code constructs `data/tasks.json` under the current working directory; that implementation detail is reflected below. The graph is based on the README and sampled source; unsampled modules are not inferred.

Main entry points: [`controllers/task_controller.py`](https://github.com/deolinjaffens/task-tracker-cli/blob/main/controllers/task_controller.py) (Task controller), [`services/task_service.py`](https://github.com/deolinjaffens/task-tracker-cli/blob/main/services/task_service.py) (Task service), [`main.py`](https://github.com/deolinjaffens/task-tracker-cli/blob/main/main.py) (Command parser), [`repositories/task_repository.py`](https://github.com/deolinjaffens/task-tracker-cli/blob/main/repositories/task_repository.py) (Task repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI"]
  node_entry["Command parser<br/>[main.py]"]
  node_controller["Task controller<br/>[task_controller.py]"]
end

subgraph group_domain["Task operations"]
  node_service["Task service<br/>[task_service.py]"]
  node_status["Task statuses<br/>[task_enum.py]"]
end

subgraph group_storage["Persistence"]
  node_repository["Task repository<br/>[task_repository.py]"]
  node_data_config["JSON data access<br/>[data_config.py]"]
  node_json_file[("Task JSON file")]
end

node_user(("User"))

node_user -->|"runs commands"| node_entry
node_entry -->|"dispatches commands"| node_controller
node_controller -->|"calls operations"| node_service
node_controller -->|"filters by status"| node_status
node_controller -->|"prints results"| node_user
node_service -->|"delegates data access"| node_repository
node_service -->|"sets task status"| node_status
node_repository -->|"calls data access"| node_data_config
node_data_config -->|"reads and writes"| node_json_file

click node_entry "https://github.com/deolinjaffens/task-tracker-cli/blob/main/main.py"
click node_controller "https://github.com/deolinjaffens/task-tracker-cli/blob/main/controllers/task_controller.py"
click node_service "https://github.com/deolinjaffens/task-tracker-cli/blob/main/services/task_service.py"
click node_status "https://github.com/deolinjaffens/task-tracker-cli/blob/main/enums/task_enum.py"
click node_repository "https://github.com/deolinjaffens/task-tracker-cli/blob/main/repositories/task_repository.py"
click node_data_config "https://github.com/deolinjaffens/task-tracker-cli/blob/main/config/data_config.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_entry,node_controller,node_user toneBlue
class node_service,node_status toneAmber
class node_repository,node_data_config,node_json_file toneMint
```

## Components

### CLI

- [Command parser](https://github.com/deolinjaffens/task-tracker-cli/blob/main/main.py): `main.py`
- [Task controller](https://github.com/deolinjaffens/task-tracker-cli/blob/main/controllers/task_controller.py): `controllers/task_controller.py`

### Task operations

- [Task service](https://github.com/deolinjaffens/task-tracker-cli/blob/main/services/task_service.py): `services/task_service.py`
- [Task statuses](https://github.com/deolinjaffens/task-tracker-cli/blob/main/enums/task_enum.py): `enums/task_enum.py`

### Persistence

- [Task repository](https://github.com/deolinjaffens/task-tracker-cli/blob/main/repositories/task_repository.py): `repositories/task_repository.py`
- [JSON data access](https://github.com/deolinjaffens/task-tracker-cli/blob/main/config/data_config.py): `config/data_config.py`
- **Task JSON file**

### Other components

- **User**

## Connections

- User → Command parser: runs commands (evidence: `README.md`)
- Command parser → Task controller: dispatches commands (evidence: `main.py`)
- Task controller → Task service: calls operations (evidence: `controllers/task_controller.py`)
- Task controller → Task statuses: filters by status (evidence: `controllers/task_controller.py`)
- Task controller → User: prints results (evidence: `controllers/task_controller.py`)
- Task service → Task repository: delegates data access (evidence: `services/task_service.py`)
- Task service → Task statuses: sets task status (evidence: `services/task_service.py`)
- Task repository → JSON data access: calls data access (evidence: `repositories/task_repository.py`)
- JSON data access → Task JSON file: reads and writes (evidence: `config/data_config.py`)
