# xylecara/gee-lister architecture

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

- Interactive diagram: https://gitdiagram.com/xylecara/gee-lister
- Repository: https://github.com/xylecara/gee-lister

## Overview

Gee Lister is a command-line todo tracker. A user invokes the CLI, which loads the JSON task list and dispatches add, update, delete, status, or list commands. Mutations write the updated list back to JSON; listing passes tasks to the formatter for terminal output. The README also documents ID-based selection and status-filtered listing. The sampled sources show command dispatch and persistence calls; the JSON file is the configured data path, not an independently inspected storage implementation.

Main entry points: [`main.go`](https://github.com/xylecara/gee-lister/blob/main/main.go) (CLI entry), [`handler/json_handler.go`](https://github.com/xylecara/gee-lister/blob/main/handler/json_handler.go) (Task JSON handler), [`cmd/delete.go`](https://github.com/xylecara/gee-lister/blob/main/cmd/delete.go) (Delete task), [`cmd/add.go`](https://github.com/xylecara/gee-lister/blob/main/cmd/add.go) (Add task)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI routing"]
  node_entry["CLI entry<br/>[main.go]"]
end

subgraph group_tasks["Task operations"]
  node_add["Add task<br/>[add.go]"]
  node_update["Update task<br/>[update.go]"]
  node_delete["Delete task<br/>[delete.go]"]
  node_mark_progress["Mark in progress<br/>[mip.go]"]
  node_mark_done["Mark done<br/>[md.go]"]
  node_mark_todo["Mark todo<br/>[ms.go]"]
  node_list["List tasks<br/>[list.go]"]
end

subgraph group_output["Formatting and storage"]
  node_formatter["Task formatter<br/>[formatter.go]"]
  node_task_store["Task JSON handler<br/>[json_handler.go]"]
  node_task_data[("Task data<br/>[tasks.json]")]
end

node_user(("CLI user"))

node_user -->|"runs commands"| node_entry
node_entry -->|"loads tasks"| node_task_store
node_entry -->|"dispatches add"| node_add
node_entry -->|"dispatches update"| node_update
node_entry -->|"dispatches delete"| node_delete
node_entry -->|"dispatches mip"| node_mark_progress
node_entry -->|"dispatches md"| node_mark_done
node_entry -->|"dispatches ms"| node_mark_todo
node_entry -->|"dispatches list"| node_list
node_entry -->|"sets data path"| node_task_data
node_add -->|"writes tasks"| node_task_store
node_update -->|"writes tasks"| node_task_store
node_delete -->|"repairs IDs"| node_formatter
node_delete -->|"writes tasks"| node_task_store
node_mark_progress -->|"writes tasks"| node_task_store
node_mark_done -->|"writes tasks"| node_task_store
node_mark_todo -->|"writes tasks"| node_task_store
node_list -->|"formats listing"| node_formatter
node_task_store -->|"reads and writes"| node_task_data

click node_entry "https://github.com/xylecara/gee-lister/blob/main/main.go"
click node_add "https://github.com/xylecara/gee-lister/blob/main/cmd/add.go"
click node_update "https://github.com/xylecara/gee-lister/blob/main/cmd/update.go"
click node_delete "https://github.com/xylecara/gee-lister/blob/main/cmd/delete.go"
click node_mark_progress "https://github.com/xylecara/gee-lister/blob/main/cmd/mip.go"
click node_mark_done "https://github.com/xylecara/gee-lister/blob/main/cmd/md.go"
click node_mark_todo "https://github.com/xylecara/gee-lister/blob/main/cmd/ms.go"
click node_list "https://github.com/xylecara/gee-lister/blob/main/cmd/list.go"
click node_formatter "https://github.com/xylecara/gee-lister/blob/main/formatter/formatter.go"
click node_task_store "https://github.com/xylecara/gee-lister/blob/main/handler/json_handler.go"
click node_task_data "https://github.com/xylecara/gee-lister/blob/main/json/tasks.json"

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_user toneBlue
class node_add,node_update,node_delete,node_mark_progress,node_mark_done,node_mark_todo,node_list toneAmber
class node_formatter,node_task_store,node_task_data toneMint
```

## Components

### CLI routing

- [CLI entry](https://github.com/xylecara/gee-lister/blob/main/main.go): `main.go`

### Task operations

- [Add task](https://github.com/xylecara/gee-lister/blob/main/cmd/add.go): `cmd/add.go`
- [Update task](https://github.com/xylecara/gee-lister/blob/main/cmd/update.go): `cmd/update.go`
- [Delete task](https://github.com/xylecara/gee-lister/blob/main/cmd/delete.go): `cmd/delete.go`
- [Mark in progress](https://github.com/xylecara/gee-lister/blob/main/cmd/mip.go): `cmd/mip.go`
- [Mark done](https://github.com/xylecara/gee-lister/blob/main/cmd/md.go): `cmd/md.go`
- [Mark todo](https://github.com/xylecara/gee-lister/blob/main/cmd/ms.go): `cmd/ms.go`
- [List tasks](https://github.com/xylecara/gee-lister/blob/main/cmd/list.go): `cmd/list.go`

### Formatting and storage

- [Task formatter](https://github.com/xylecara/gee-lister/blob/main/formatter/formatter.go): `formatter/formatter.go`
- [Task JSON handler](https://github.com/xylecara/gee-lister/blob/main/handler/json_handler.go): `handler/json_handler.go`
- [Task data](https://github.com/xylecara/gee-lister/blob/main/json/tasks.json): `json/tasks.json`

### Other components

- **CLI user**

## Connections

- CLI user → CLI entry: runs commands (evidence: `README.md`)
- CLI entry → Task JSON handler: loads tasks (evidence: `main.go`)
- CLI entry → Add task: dispatches add (evidence: `main.go`)
- CLI entry → Update task: dispatches update (evidence: `main.go`)
- CLI entry → Delete task: dispatches delete (evidence: `main.go`)
- CLI entry → Mark in progress: dispatches mip (evidence: `main.go`)
- CLI entry → Mark done: dispatches md (evidence: `main.go`)
- CLI entry → Mark todo: dispatches ms (evidence: `main.go`)
- CLI entry → List tasks: dispatches list (evidence: `main.go`)
- CLI entry → Task data: sets data path (evidence: `main.go`)
- Add task → Task JSON handler: writes tasks (evidence: `cmd/add.go`)
- Update task → Task JSON handler: writes tasks (evidence: `cmd/update.go`)
- Delete task → Task formatter: repairs IDs (evidence: `cmd/delete.go`)
- Delete task → Task JSON handler: writes tasks (evidence: `cmd/delete.go`)
- Mark in progress → Task JSON handler: writes tasks (evidence: `cmd/mip.go`)
- Mark done → Task JSON handler: writes tasks (evidence: `cmd/md.go`)
- Mark todo → Task JSON handler: writes tasks (evidence: `cmd/ms.go`)
- List tasks → Task formatter: formats listing (evidence: `cmd/list.go`)
- Task JSON handler → Task data: reads and writes
