# fdu-sp/mytodo-rear architecture

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

- Interactive diagram: https://gitdiagram.com/fdu-sp/mytodo-rear
- Repository: https://github.com/fdu-sp/mytodo-rear

## Overview

MyTodo-rear is a Spring Boot backend for managing tasks and organizing daily work. The main workflow is client requests through REST controllers, task/list services, and persistence, then structured responses; related branches support tags, groups, My Day recommendations and scheduling, reminders, quadrants, and focus timers. Text-based task extraction calls an OpenAI-compatible service and can pass extracted task data into task creation. The excerpts establish several service-to-DAO and orchestration calls; links for unsampled feature services are kept at the subsystem level where exact wiring is not shown.

Main entry points: [`src/main/java/com/zmark/mytodo/dao`](https://github.com/fdu-sp/mytodo-rear/tree/main/src/main/java/com/zmark/mytodo/dao) (JPA repositories), [`src/main/java/com/zmark/mytodo/service/impl/TaskService.java`](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TaskService.java) (Task service), [`src/main/java/com/zmark/mytodo/service/impl/MyDayTaskService.java`](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/MyDayTaskService.java) (My Day service), [`src/main/java/com/zmark/mytodo/controller/TaskListController.java`](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TaskListController.java) (List endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_task_api["Task endpoints"]
  node_list_api["List endpoints"]
  node_tag_api["Tag endpoints<br/>[TagController.java]"]
  node_extract_api["Extraction endpoint"]
  node_planning_api["Planning endpoints"]
  node_timer_api["Timer endpoints"]
end

subgraph group_tasks["Task Organization"]
  node_task_service["Task service<br/>[TaskService.java]"]
  node_list_service["List service"]
  node_tag_service["Tag service<br/>[TagService.java]"]
  node_group_service["Group service"]
end

subgraph group_planning["Planning and Reminders"]
  node_myday_service["My Day service"]
  node_reminder_service["Reminder service"]
  node_quadrant_service["Quadrant service"]
  node_scheduler["Daily scheduler"]
end

subgraph group_focus["Focus Tracking"]
  node_timer_service["Timer service<br/>[TimerService.java]"]
end

subgraph group_integrations["AI Integration"]
  node_extract_service["Task extraction"]
  node_gpt_client["GPT client<br/>[OpenAIClient.java]"]
end

node_client(("Client"))
node_openai(("OpenAI-compatible API"))
node_daos["JPA repositories"]
node_mysql[("MySQL database")]

node_client -->|"requests"| node_task_api
node_client -->|"requests"| node_list_api
node_client -->|"requests"| node_tag_api
node_client -->|"requests"| node_extract_api
node_client -->|"requests"| node_planning_api
node_client -->|"requests"| node_timer_api
node_task_api -->|"calls"| node_task_service
node_list_api -->|"calls"| node_list_service
node_list_api -->|"calls"| node_myday_service
node_tag_api -->|"calls"| node_tag_service
node_extract_api -->|"calls"| node_extract_service
node_timer_api -->|"calls"| node_timer_service
node_planning_api -->|"dispatches"| node_reminder_service
node_planning_api -->|"dispatches"| node_quadrant_service
node_scheduler -->|"calls"| node_myday_service
node_myday_service -->|"queries tasks"| node_task_service
node_list_service -->|"queries tasks"| node_task_service
node_extract_service -->|"requests extraction"| node_gpt_client
node_extract_service -->|"creates task"| node_task_service
node_gpt_client -->|"sends prompt"| node_openai
node_task_service -->|"reads and writes"| node_daos
node_list_service -->|"reads and writes"| node_daos
node_tag_service -->|"reads and writes"| node_daos
node_group_service -->|"reads and writes"| node_daos
node_myday_service -->|"reads and writes"| node_daos
node_reminder_service -->|"accesses data"| node_daos
node_quadrant_service -->|"accesses data"| node_daos
node_timer_service -->|"reads and writes"| node_daos
node_daos -->|"persists data"| node_mysql

click node_task_api "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TaskController.java"
click node_list_api "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TaskListController.java"
click node_tag_api "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TagController.java"
click node_extract_api "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TaskExtractController.java"
click node_planning_api "https://github.com/fdu-sp/mytodo-rear/tree/main/src/main/java/com/zmark/mytodo/controller"
click node_timer_api "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TimerController.java"
click node_task_service "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TaskService.java"
click node_list_service "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TaskListService.java"
click node_tag_service "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TagService.java"
click node_group_service "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TaskGroupService.java"
click node_myday_service "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/MyDayTaskService.java"
click node_reminder_service "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/ReminderService.java"
click node_quadrant_service "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/FourQuadrantService.java"
click node_scheduler "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/scheduler/MyDayTaskScheduler.java"
click node_timer_service "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TimerService.java"
click node_extract_service "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TaskExtractService.java"
click node_gpt_client "https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/gpt/OpenAIClient.java"
click node_daos "https://github.com/fdu-sp/mytodo-rear/tree/main/src/main/java/com/zmark/mytodo/dao"

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_task_api,node_list_api,node_tag_api,node_extract_api,node_planning_api,node_timer_api,node_client toneBlue
class node_task_service,node_list_service,node_tag_service,node_group_service,node_mysql toneAmber
class node_myday_service,node_reminder_service,node_quadrant_service,node_scheduler,node_openai toneMint
class node_timer_service toneRose
class node_extract_service,node_gpt_client toneIndigo
class node_daos toneTeal
```

## Components

### REST API

- [Task endpoints](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TaskController.java): `src/main/java/com/zmark/mytodo/controller/TaskController.java`
- [List endpoints](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TaskListController.java): `src/main/java/com/zmark/mytodo/controller/TaskListController.java`
- [Tag endpoints](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TagController.java): `src/main/java/com/zmark/mytodo/controller/TagController.java`
- [Extraction endpoint](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TaskExtractController.java): `src/main/java/com/zmark/mytodo/controller/TaskExtractController.java`
- [Planning endpoints](https://github.com/fdu-sp/mytodo-rear/tree/main/src/main/java/com/zmark/mytodo/controller): `src/main/java/com/zmark/mytodo/controller`
- [Timer endpoints](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/controller/TimerController.java): `src/main/java/com/zmark/mytodo/controller/TimerController.java`

### Task Organization

- [Task service](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TaskService.java): `src/main/java/com/zmark/mytodo/service/impl/TaskService.java`
- [List service](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TaskListService.java): `src/main/java/com/zmark/mytodo/service/impl/TaskListService.java`
- [Tag service](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TagService.java): `src/main/java/com/zmark/mytodo/service/impl/TagService.java`
- [Group service](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TaskGroupService.java): `src/main/java/com/zmark/mytodo/service/impl/TaskGroupService.java`

### Planning and Reminders

- [My Day service](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/MyDayTaskService.java): `src/main/java/com/zmark/mytodo/service/impl/MyDayTaskService.java`
- [Reminder service](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/ReminderService.java): `src/main/java/com/zmark/mytodo/service/impl/ReminderService.java`
- [Quadrant service](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/FourQuadrantService.java): `src/main/java/com/zmark/mytodo/service/impl/FourQuadrantService.java`
- [Daily scheduler](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/scheduler/MyDayTaskScheduler.java): `src/main/java/com/zmark/mytodo/scheduler/MyDayTaskScheduler.java`

### Focus Tracking

- [Timer service](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TimerService.java): `src/main/java/com/zmark/mytodo/service/impl/TimerService.java`

### AI Integration

- [Task extraction](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/service/impl/TaskExtractService.java): `src/main/java/com/zmark/mytodo/service/impl/TaskExtractService.java`
- [GPT client](https://github.com/fdu-sp/mytodo-rear/blob/main/src/main/java/com/zmark/mytodo/gpt/OpenAIClient.java): `src/main/java/com/zmark/mytodo/gpt/OpenAIClient.java`

### Other components

- **Client**
- **OpenAI-compatible API**
- [JPA repositories](https://github.com/fdu-sp/mytodo-rear/tree/main/src/main/java/com/zmark/mytodo/dao): `src/main/java/com/zmark/mytodo/dao`
- **MySQL database**

## Connections

- Client → Task endpoints: requests
- Client → List endpoints: requests
- Client → Tag endpoints: requests
- Client → Extraction endpoint: requests
- Client → Planning endpoints: requests
- Client → Timer endpoints: requests
- Task endpoints → Task service: calls
- List endpoints → List service: calls
- List endpoints → My Day service: calls
- Tag endpoints → Tag service: calls
- Extraction endpoint → Task extraction: calls
- Timer endpoints → Timer service: calls
- Planning endpoints → Reminder service: dispatches
- Planning endpoints → Quadrant service: dispatches
- Daily scheduler → My Day service: calls
- My Day service → Task service: queries tasks
- List service → Task service: queries tasks
- Task extraction → GPT client: requests extraction
- Task extraction → Task service: creates task
- GPT client → OpenAI-compatible API: sends prompt
- Task service → JPA repositories: reads and writes
- List service → JPA repositories: reads and writes
- Tag service → JPA repositories: reads and writes
- Group service → JPA repositories: reads and writes
- My Day service → JPA repositories: reads and writes
- Reminder service → JPA repositories: accesses data
- Quadrant service → JPA repositories: accesses data
- Timer service → JPA repositories: reads and writes
- JPA repositories → MySQL database: persists data
