# erpicoding/dalton-manager architecture

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

- Interactive diagram: https://gitdiagram.com/erpicoding/dalton-manager
- Repository: https://github.com/erpicoding/dalton-manager

## Overview

Dalton Manager is a browser-based school organizer. Users can create, edit, prioritize, filter, complete, and delete Dalton assignments; organize room selections across alternating A/B timetable weeks; and clear locally stored data in Settings. Routing connects these distinct screens, while task and favorite data persist in browser localStorage. The README provides only the product name, and several page implementations were not sampled, so uncertain data wiring is omitted.

Main entry points: [`src/App.jsx`](https://github.com/erpicoding/dalton-manager/blob/master/src/App.jsx) (Application routes), [`src/TasksPage/TasksPage.jsx`](https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/TasksPage.jsx) (Tasks screen), [`src/TasksPage/TaskList.jsx`](https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/TaskList.jsx) (Search and task list), [`src/TimetablePage/TimetablePage.jsx`](https://github.com/erpicoding/dalton-manager/blob/master/src/TimetablePage/TimetablePage.jsx) (Timetable screen)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App shell"]
  node_app["Application routes<br/>[App.jsx]"]
  node_header["Navigation header<br/>[Header.jsx]"]
  node_footer["Info and footer<br/>[Footer.jsx]"]
end

subgraph group_tasks["Assignment management"]
  node_tasks_page["Tasks screen<br/>[TasksPage.jsx]"]
  node_task_list["Search and task list<br/>[TaskList.jsx]"]
  node_new_task["Create assignment<br/>[NewTaskModal.jsx]"]
  node_edit_task["Edit assignment<br/>[EditTaskModal.jsx]"]
  node_empty_tasks["Empty list state<br/>[NoListItems.jsx]"]
end

subgraph group_timetable["Timetable planning"]
  node_timetable_page["Timetable screen<br/>[TimetablePage.jsx]"]
  node_week_a["Week A grid<br/>[WeekA.jsx]"]
  node_week_b["Week B grid<br/>[WeekB.jsx]"]
  node_room_select["Room selection"]
  node_room_data["Room schedule data<br/>[daltonStunden.json]"]
end

subgraph group_account["Account and settings"]
  node_settings["Data settings<br/>[SettingsPage.jsx]"]
  node_login["Login placeholder<br/>[LoginPage.jsx]"]
end

node_user(("Student"))
node_local_storage[("Browser localStorage")]

node_user -->|"uses"| node_app
node_app -->|"renders"| node_header
node_app -->|"renders"| node_footer
node_app -->|"routes"| node_tasks_page
node_app -->|"routes"| node_timetable_page
node_app -->|"routes"| node_settings
node_app -->|"routes"| node_login
node_tasks_page -->|"loads and saves"| node_local_storage
node_tasks_page -->|"renders"| node_task_list
node_tasks_page -->|"opens"| node_new_task
node_task_list -->|"opens"| node_edit_task
node_task_list -->|"renders when empty"| node_empty_tasks
node_timetable_page -->|"renders"| node_week_a
node_timetable_page -->|"renders"| node_week_b
node_week_a -->|"renders"| node_room_select
node_week_b -->|"renders"| node_room_select
node_room_select -->|"loads and saves favorites"| node_local_storage
node_settings -->|"clears"| node_local_storage

click node_app "https://github.com/erpicoding/dalton-manager/blob/master/src/App.jsx"
click node_header "https://github.com/erpicoding/dalton-manager/blob/master/src/Header.jsx"
click node_footer "https://github.com/erpicoding/dalton-manager/blob/master/src/Footer.jsx"
click node_tasks_page "https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/TasksPage.jsx"
click node_task_list "https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/TaskList.jsx"
click node_new_task "https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/NewTaskModal.jsx"
click node_edit_task "https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/EditTaskModal.jsx"
click node_empty_tasks "https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/NoListItems.jsx"
click node_timetable_page "https://github.com/erpicoding/dalton-manager/blob/master/src/TimetablePage/TimetablePage.jsx"
click node_week_a "https://github.com/erpicoding/dalton-manager/blob/master/src/TimetablePage/WeekA.jsx"
click node_week_b "https://github.com/erpicoding/dalton-manager/blob/master/src/TimetablePage/WeekB.jsx"
click node_room_select "https://github.com/erpicoding/dalton-manager/blob/master/src/TimetablePage/DaltonStundenSelect.jsx"
click node_room_data "https://github.com/erpicoding/dalton-manager/blob/master/public/json/daltonStunden.json"
click node_settings "https://github.com/erpicoding/dalton-manager/blob/master/src/SettingsPage/SettingsPage.jsx"
click node_login "https://github.com/erpicoding/dalton-manager/blob/master/src/LoginPage/LoginPage.jsx"

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_app,node_header,node_footer toneBlue
class node_tasks_page,node_task_list,node_new_task,node_edit_task,node_empty_tasks,node_local_storage toneAmber
class node_timetable_page,node_week_a,node_week_b,node_room_select,node_room_data toneMint
class node_settings,node_login toneRose
class node_user toneIndigo
```

## Components

### App shell

- [Application routes](https://github.com/erpicoding/dalton-manager/blob/master/src/App.jsx): `src/App.jsx`
- [Navigation header](https://github.com/erpicoding/dalton-manager/blob/master/src/Header.jsx): `src/Header.jsx`
- [Info and footer](https://github.com/erpicoding/dalton-manager/blob/master/src/Footer.jsx): `src/Footer.jsx`

### Assignment management

- [Tasks screen](https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/TasksPage.jsx): `src/TasksPage/TasksPage.jsx`
- [Search and task list](https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/TaskList.jsx): `src/TasksPage/TaskList.jsx`
- [Create assignment](https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/NewTaskModal.jsx): `src/TasksPage/NewTaskModal.jsx`
- [Edit assignment](https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/EditTaskModal.jsx): `src/TasksPage/EditTaskModal.jsx`
- [Empty list state](https://github.com/erpicoding/dalton-manager/blob/master/src/TasksPage/NoListItems.jsx): `src/TasksPage/NoListItems.jsx`

### Timetable planning

- [Timetable screen](https://github.com/erpicoding/dalton-manager/blob/master/src/TimetablePage/TimetablePage.jsx): `src/TimetablePage/TimetablePage.jsx`
- [Week A grid](https://github.com/erpicoding/dalton-manager/blob/master/src/TimetablePage/WeekA.jsx): `src/TimetablePage/WeekA.jsx`
- [Week B grid](https://github.com/erpicoding/dalton-manager/blob/master/src/TimetablePage/WeekB.jsx): `src/TimetablePage/WeekB.jsx`
- [Room selection](https://github.com/erpicoding/dalton-manager/blob/master/src/TimetablePage/DaltonStundenSelect.jsx): `src/TimetablePage/DaltonStundenSelect.jsx`
- [Room schedule data](https://github.com/erpicoding/dalton-manager/blob/master/public/json/daltonStunden.json): `public/json/daltonStunden.json`

### Account and settings

- [Data settings](https://github.com/erpicoding/dalton-manager/blob/master/src/SettingsPage/SettingsPage.jsx): `src/SettingsPage/SettingsPage.jsx`
- [Login placeholder](https://github.com/erpicoding/dalton-manager/blob/master/src/LoginPage/LoginPage.jsx): `src/LoginPage/LoginPage.jsx`

### Other components

- **Student**
- **Browser localStorage**

## Connections

- Student → Application routes: uses
- Application routes → Navigation header: renders
- Application routes → Info and footer: renders
- Application routes → Tasks screen: routes
- Application routes → Timetable screen: routes
- Application routes → Data settings: routes
- Application routes → Login placeholder: routes
- Tasks screen → Browser localStorage: loads and saves
- Tasks screen → Search and task list: renders
- Tasks screen → Create assignment: opens
- Search and task list → Edit assignment: opens
- Search and task list → Empty list state: renders when empty
- Timetable screen → Week A grid: renders
- Timetable screen → Week B grid: renders
- Week A grid → Room selection: renders
- Week B grid → Room selection: renders
- Room selection → Browser localStorage: loads and saves favorites
- Data settings → Browser localStorage: clears
