# marcodotexe/acadsistant architecture

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

- Interactive diagram: https://gitdiagram.com/marcodotexe/acadsistant
- Repository: https://github.com/marcodotexe/acadsistant

## Overview

Acadsistant is a browser-based academic planner and student productivity workspace. The user opens the React app, then works across a dashboard and dedicated timetable, calendar, task, backlog, reminder, alarm, and focus-timer views; the app persists state locally and offers JSON backup and restore. The graph preserves these documented product areas and the shared modal layer. Connections are limited to the entry point, imports, and local-storage behavior shown in excerpts or the source index; unsampled view internals are not inferred.

Main entry points: [`src/App.tsx`](https://github.com/marcodotexe/acadsistant/blob/main/src/App.tsx) (App Shell), [`src/components/Modal.tsx`](https://github.com/marcodotexe/acadsistant/blob/main/src/components/Modal.tsx) (Modal Dialogs), [`src/components/TasksView.tsx`](https://github.com/marcodotexe/acadsistant/blob/main/src/components/TasksView.tsx) (Tasks), [`src/components/DashboardView.tsx`](https://github.com/marcodotexe/acadsistant/blob/main/src/components/DashboardView.tsx) (Dashboard & Timetable)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["App Workspace"]
  node_app["App Shell<br/>[App.tsx]"]
end

subgraph group_planning["Academic Planning"]
  node_dashboard["Dashboard &amp; Timetable<br/>[DashboardView.tsx]"]
  node_calendar["Calendar<br/>[CalendarView.tsx]"]
end

subgraph group_productivity["Productivity Tools"]
  node_tasks["Tasks<br/>[TasksView.tsx]"]
  node_backlogs["Backlogs<br/>[BacklogsView.tsx]"]
  node_reminders["Reminders<br/>[RemindersView.tsx]"]
  node_alarms["Alarms<br/>[AlarmsView.tsx]"]
  node_focus["Focus Timer<br/>[FocusTimerView.tsx]"]
end

subgraph group_shared["Shared Runtime"]
  node_modal["Modal Dialogs<br/>[Modal.tsx]"]
  node_storagehook["Persistence Hook<br/>[useLocalStorage.ts]"]
  node_localstorage[("Browser Local Storage")]
  node_types["Domain Types<br/>[types.ts]"]
  node_utils["Style Utilities<br/>[utils.ts]"]
end

node_student(("Student"))
node_browser["Web Browser"]

node_student -->|"uses"| node_browser
node_browser -->|"loads app"| node_app
node_app -->|"renders"| node_dashboard
node_app -->|"renders"| node_calendar
node_app -->|"renders"| node_tasks
node_app -->|"renders"| node_backlogs
node_app -->|"renders"| node_reminders
node_app -->|"renders"| node_alarms
node_app -->|"renders"| node_focus
node_app -->|"persists state"| node_storagehook
node_storagehook -->|"reads and writes"| node_localstorage
node_tasks -->|"renders"| node_modal
node_calendar -->|"renders"| node_modal
node_dashboard -->|"renders"| node_modal
node_backlogs -->|"renders"| node_modal
node_reminders -->|"uses"| node_modal
node_alarms -->|"renders"| node_modal
node_focus -->|"renders"| node_modal
node_app -->|"uses styles"| node_utils
node_tasks -->|"uses styles"| node_utils

click node_app "https://github.com/marcodotexe/acadsistant/blob/main/src/App.tsx"
click node_dashboard "https://github.com/marcodotexe/acadsistant/blob/main/src/components/DashboardView.tsx"
click node_calendar "https://github.com/marcodotexe/acadsistant/blob/main/src/components/CalendarView.tsx"
click node_tasks "https://github.com/marcodotexe/acadsistant/blob/main/src/components/TasksView.tsx"
click node_backlogs "https://github.com/marcodotexe/acadsistant/blob/main/src/components/BacklogsView.tsx"
click node_reminders "https://github.com/marcodotexe/acadsistant/blob/main/src/components/RemindersView.tsx"
click node_alarms "https://github.com/marcodotexe/acadsistant/blob/main/src/components/AlarmsView.tsx"
click node_focus "https://github.com/marcodotexe/acadsistant/blob/main/src/components/FocusTimerView.tsx"
click node_modal "https://github.com/marcodotexe/acadsistant/blob/main/src/components/Modal.tsx"
click node_storagehook "https://github.com/marcodotexe/acadsistant/blob/main/src/hooks/useLocalStorage.ts"
click node_types "https://github.com/marcodotexe/acadsistant/blob/main/src/types.ts"
click node_utils "https://github.com/marcodotexe/acadsistant/blob/main/src/lib/utils.ts"

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_browser toneBlue
class node_dashboard,node_calendar toneAmber
class node_tasks,node_backlogs,node_reminders,node_alarms,node_focus toneMint
class node_modal,node_storagehook,node_localstorage,node_types,node_utils toneRose
class node_student toneIndigo
```

## Components

### App Workspace

- [App Shell](https://github.com/marcodotexe/acadsistant/blob/main/src/App.tsx): `src/App.tsx`

### Academic Planning

- [Dashboard & Timetable](https://github.com/marcodotexe/acadsistant/blob/main/src/components/DashboardView.tsx): `src/components/DashboardView.tsx`
- [Calendar](https://github.com/marcodotexe/acadsistant/blob/main/src/components/CalendarView.tsx): `src/components/CalendarView.tsx`

### Productivity Tools

- [Tasks](https://github.com/marcodotexe/acadsistant/blob/main/src/components/TasksView.tsx): `src/components/TasksView.tsx`
- [Backlogs](https://github.com/marcodotexe/acadsistant/blob/main/src/components/BacklogsView.tsx): `src/components/BacklogsView.tsx`
- [Reminders](https://github.com/marcodotexe/acadsistant/blob/main/src/components/RemindersView.tsx): `src/components/RemindersView.tsx`
- [Alarms](https://github.com/marcodotexe/acadsistant/blob/main/src/components/AlarmsView.tsx): `src/components/AlarmsView.tsx`
- [Focus Timer](https://github.com/marcodotexe/acadsistant/blob/main/src/components/FocusTimerView.tsx): `src/components/FocusTimerView.tsx`

### Shared Runtime

- [Modal Dialogs](https://github.com/marcodotexe/acadsistant/blob/main/src/components/Modal.tsx): `src/components/Modal.tsx`
- [Persistence Hook](https://github.com/marcodotexe/acadsistant/blob/main/src/hooks/useLocalStorage.ts): `src/hooks/useLocalStorage.ts`
- **Browser Local Storage**
- [Domain Types](https://github.com/marcodotexe/acadsistant/blob/main/src/types.ts): `src/types.ts`
- [Style Utilities](https://github.com/marcodotexe/acadsistant/blob/main/src/lib/utils.ts): `src/lib/utils.ts`

### Other components

- **Student**
- **Web Browser**

## Connections

- Student → Web Browser: uses (evidence: `README.md`)
- Web Browser → App Shell: loads app
- App Shell → Dashboard & Timetable: renders (evidence: `src/App.tsx`)
- App Shell → Calendar: renders (evidence: `src/App.tsx`)
- App Shell → Tasks: renders (evidence: `src/App.tsx`)
- App Shell → Backlogs: renders (evidence: `src/App.tsx`)
- App Shell → Reminders: renders (evidence: `src/App.tsx`)
- App Shell → Alarms: renders (evidence: `src/App.tsx`)
- App Shell → Focus Timer: renders (evidence: `src/App.tsx`)
- App Shell → Persistence Hook: persists state (evidence: `src/App.tsx`)
- Persistence Hook → Browser Local Storage: reads and writes (evidence: `src/hooks/useLocalStorage.ts`)
- Tasks → Modal Dialogs: renders (evidence: `src/components/TasksView.tsx`)
- Calendar → Modal Dialogs: renders (evidence: `src/components/CalendarView.tsx`)
- Dashboard & Timetable → Modal Dialogs: renders (evidence: `src/components/DashboardView.tsx`)
- Backlogs → Modal Dialogs: renders (evidence: `src/components/BacklogsView.tsx`)
- Reminders → Modal Dialogs: uses (evidence: `src/components/RemindersView.tsx`)
- Alarms → Modal Dialogs: renders (evidence: `src/components/AlarmsView.tsx`)
- Focus Timer → Modal Dialogs: renders (evidence: `src/components/FocusTimerView.tsx`)
- App Shell → Style Utilities: uses styles (evidence: `src/App.tsx`)
- Tasks → Style Utilities: uses styles (evidence: `src/components/TasksView.tsx`)
