# developsys/clasedi architecture

> Architecture diagram of the GitHub repository developsys/clasedi, 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/developsys/clasedi
- Repository: https://github.com/developsys/clasedi

## Overview

This is a small Java task-management exercise: tasks are created, held in memory, listed or filtered, and imported/exported through CSV or Java object serialization. A separate Main entry point demonstrates fetching posts over HTTP and parsing JSON; the README describes a broader Java/Swing curriculum, but no Swing UI appears in the supplied tree. The map follows sampled controller and file code; the HTTP-to-task mapping is only partially evidenced.

Main entry points: [`todolist/src/main/java/controller/FileController.java`](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/controller/FileController.java) (FileController), [`todolist/src/main/java/controller/TaskController.java`](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/controller/TaskController.java) (TaskController), [`todolist/src/main/java/Main.java`](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/Main.java) (HTTP demo), [`todolist/src/main/java/model/Task.java`](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/model/Task.java) (Task base)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application entry"]
  node_main["HTTP demo<br/>[Main.java]"]
  node_json["JSON post parsing<br/>[Main.java]"]
end

subgraph group_control["Task control"]
  node_tasks["TaskController"]
  node_tasklist["In-memory task list"]
end

subgraph group_domain["Task domain"]
  node_task["Task base<br/>[Task.java]"]
  node_person["Person<br/>[Person.java]"]
  node_personal["PersonalTask<br/>[PersonalTask.java]"]
  node_work["WorkTask<br/>[WorkTask.java]"]
end

subgraph group_persistence["File persistence"]
  node_filesvc["FileController"]
  node_csv["CSV files<br/>[all.csv]"]
  node_objects["Serialized tasks<br/>[data.obj]"]
end

node_user(("Caller"))
node_remote["Posts service"]

node_user -->|"invokes"| node_tasks
node_tasks -->|"updates"| node_tasklist
node_tasks -->|"lists and filters"| node_task
node_tasks -->|"imports and exports"| node_filesvc
node_filesvc -->|"reads or writes"| node_csv
node_filesvc -->|"reads or writes"| node_objects
node_filesvc -->|"constructs"| node_personal
node_filesvc -->|"constructs"| node_work
node_personal -->|"extends"| node_task
node_work -->|"extends"| node_task
node_task -->|"associates"| node_person
node_user -->|"starts"| node_main
node_main -->|"requests posts"| node_remote
node_remote -->|"returns JSON"| node_main
node_main -->|"parses response"| node_json
node_json -.->|"attempts mapping"| node_personal
node_json -.->|"attempts mapping"| node_work

click node_main "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/Main.java"
click node_tasks "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/controller/TaskController.java"
click node_tasklist "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/controller/TaskController.java"
click node_filesvc "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/controller/FileController.java"
click node_csv "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/files/all.csv"
click node_objects "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/files/data.obj"
click node_task "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/model/Task.java"
click node_person "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/model/Person.java"
click node_personal "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/model/PersonalTask.java"
click node_work "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/model/WorkTask.java"
click node_json "https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/Main.java"

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_json toneBlue
class node_tasks,node_tasklist toneAmber
class node_task,node_person,node_personal,node_work toneMint
class node_filesvc,node_csv,node_objects toneRose
class node_user,node_remote toneIndigo
```

## Components

### Application entry

- [HTTP demo](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/Main.java): `todolist/src/main/java/Main.java`
- [JSON post parsing](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/Main.java): `todolist/src/main/java/Main.java`

### Task control

- [TaskController](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/controller/TaskController.java): `todolist/src/main/java/controller/TaskController.java`
- [In-memory task list](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/controller/TaskController.java): `todolist/src/main/java/controller/TaskController.java`

### Task domain

- [Task base](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/model/Task.java): `todolist/src/main/java/model/Task.java`
- [Person](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/model/Person.java): `todolist/src/main/java/model/Person.java`
- [PersonalTask](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/model/PersonalTask.java): `todolist/src/main/java/model/PersonalTask.java`
- [WorkTask](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/model/WorkTask.java): `todolist/src/main/java/model/WorkTask.java`

### File persistence

- [FileController](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/controller/FileController.java): `todolist/src/main/java/controller/FileController.java`
- [CSV files](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/files/all.csv): `todolist/src/main/java/files/all.csv`
- [Serialized tasks](https://github.com/developsys/clasedi/blob/master/todolist/src/main/java/files/data.obj): `todolist/src/main/java/files/data.obj`

### Other components

- **Caller**
- **Posts service**

## Connections

- Caller → TaskController: invokes
- TaskController → In-memory task list: updates
- TaskController → Task base: lists and filters
- TaskController → FileController: imports and exports
- FileController → CSV files: reads or writes
- FileController → Serialized tasks: reads or writes
- FileController → PersonalTask: constructs
- FileController → WorkTask: constructs
- PersonalTask → Task base: extends
- WorkTask → Task base: extends
- Task base → Person: associates
- Caller → HTTP demo: starts
- HTTP demo → Posts service: requests posts
- Posts service → HTTP demo: returns JSON
- HTTP demo → JSON post parsing: parses response
- JSON post parsing → PersonalTask: attempts mapping
- JSON post parsing → WorkTask: attempts mapping
