# majdalsaaty/task-management-v1 architecture

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

- Interactive diagram: https://gitdiagram.com/majdalsaaty/task-management-v1
- Repository: https://github.com/majdalsaaty/task-management-v1

## Overview

This is a study-planning application: users manage tasks, preferences and university commitments, then schedule study slots and review conflicts, notifications and analytics. The clearest sampled workflow is task management through the task context and API, with the backend task controller invoking the scheduling engine, which uses scheduling data and persists slots. Other major screens and backend domains are retained from the repository tree; their detailed wiring is not asserted where source excerpts were unavailable.

Main entry points: [`backend/app/Services/SchedulingEngine.php`](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Services/SchedulingEngine.php) (Scheduling engine), [`backend/config/database.php`](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/config/database.php) (Relational database), [`backend/app/Http/Controllers/API/TaskController.php`](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/TaskController.php) (Task operations), [`backend/app/Models/ScheduledSlot.php`](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/ScheduledSlot.php) (Scheduled slots)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["React entry<br/>[main.jsx]"]
  node_router["Page router<br/>[index.jsx]"]
  node_tasks_page["Task manager<br/>[Tasks.jsx]"]
  node_task_context["Task state<br/>[TaskContext.jsx]"]
  node_scheduler_page["Scheduler<br/>[Scheduler.jsx]"]
  node_timeline["Schedule timeline<br/>[Timeline.jsx]"]
  node_preferences_page["Study preferences<br/>[Preferences.jsx]"]
  node_university_page["University schedule"]
  node_conflicts_page["Conflict review<br/>[Conflicts.jsx]"]
  node_analytics_page["Analytics<br/>[Analytics.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_api_client["HTTP API client<br/>[api.js]"]
end

subgraph group_planning["Planning API"]
  node_task_api["Task operations<br/>[TaskController.php]"]
  node_scheduler_engine["Scheduling engine"]
  node_slot_api["Scheduled slots"]
  node_uni_api["University schedule API"]
  node_overlap["Overlap validation<br/>[OverlapHelper.php]"]
end

subgraph group_identity["Accounts and alerts"]
  node_auth_page["Sign in and registration<br/>[Auth.jsx]"]
  node_auth_context["Authentication state<br/>[AuthContext.jsx]"]
  node_auth_api["Authentication API<br/>[AuthController.php]"]
  node_notifications_page["Notifications<br/>[Notifications.jsx]"]
  node_notification_context["Notification state"]
  node_notification_api["Notification API"]
end

subgraph group_data["Application data"]
  node_task_model["Tasks<br/>[Task.php]"]
  node_slot_model["Scheduled slots<br/>[ScheduledSlot.php]"]
  node_preference_model["Daily preferences"]
  node_university_model["University commitments"]
  node_conflict_model["Conflict logs<br/>[ConflictLog.php]"]
  node_notification_model["Notifications<br/>[Notification.php]"]
  node_user_model["User accounts<br/>[User.php]"]
  node_database[("Relational database<br/>[database.php]")]
end

node_user(("Student"))

node_user -->|"opens app"| node_app
node_app -->|"mounts routes"| node_router
node_tasks_page -->|"uses task state"| node_task_context
node_user -->|"manages tasks"| node_tasks_page
node_user -->|"plans study"| node_scheduler_page
node_scheduler_page -->|"displays schedule"| node_timeline
node_task_api -->|"invokes scheduling"| node_scheduler_engine
node_task_api -->|"loads preferences"| node_preference_model
node_task_api -->|"creates alerts"| node_notification_model
node_scheduler_engine -->|"reads tasks"| node_task_model
node_scheduler_engine -->|"reads and writes slots"| node_slot_model
node_scheduler_engine -->|"reads preferences"| node_preference_model
node_scheduler_engine -->|"reads commitments"| node_university_model
node_scheduler_engine -->|"refreshes conflicts"| node_conflict_model
node_slot_api -->|"manages slots"| node_slot_model
node_uni_api -->|"checks overlap"| node_overlap
node_uni_api -->|"manages commitments"| node_university_model
node_auth_api -->|"manages accounts"| node_user_model
node_notification_api -->|"manages notifications"| node_notification_model
node_user_model -->|"persists"| node_database
node_task_model -->|"persists"| node_database
node_slot_model -->|"persists"| node_database
node_preference_model -->|"persists"| node_database
node_university_model -->|"persists"| node_database
node_conflict_model -->|"persists"| node_database
node_notification_model -->|"persists"| node_database

click node_app "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/main.jsx"
click node_router "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/router/index.jsx"
click node_tasks_page "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Tasks.jsx"
click node_task_context "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/contexts/TaskContext.jsx"
click node_scheduler_page "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Scheduler.jsx"
click node_timeline "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/components/Timeline/Timeline.jsx"
click node_preferences_page "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Preferences.jsx"
click node_university_page "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/UniversitySchedule.jsx"
click node_conflicts_page "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Conflicts.jsx"
click node_analytics_page "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Analytics.jsx"
click node_dashboard "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Dashboard.jsx"
click node_api_client "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/services/api.js"
click node_task_api "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/TaskController.php"
click node_scheduler_engine "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Services/SchedulingEngine.php"
click node_slot_api "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/ScheduledSlotController.php"
click node_uni_api "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/UniversityScheduleController.php"
click node_overlap "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Services/OverlapHelper.php"
click node_auth_page "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Auth.jsx"
click node_auth_context "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/contexts/AuthContext.jsx"
click node_auth_api "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/AuthController.php"
click node_notifications_page "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Notifications.jsx"
click node_notification_context "https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/contexts/NotificationContext.jsx"
click node_notification_api "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/NotificationController.php"
click node_task_model "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/Task.php"
click node_slot_model "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/ScheduledSlot.php"
click node_preference_model "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/UserDailyPreference.php"
click node_university_model "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/UniversitySchedule.php"
click node_conflict_model "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/ConflictLog.php"
click node_notification_model "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/Notification.php"
click node_user_model "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/User.php"
click node_database "https://github.com/majdalsaaty/task-management-v1/blob/main/backend/config/database.php"

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_router,node_tasks_page,node_task_context,node_scheduler_page,node_timeline,node_preferences_page,node_university_page,node_conflicts_page,node_analytics_page,node_dashboard,node_api_client toneBlue
class node_task_api,node_scheduler_engine,node_slot_api,node_uni_api,node_overlap toneAmber
class node_auth_page,node_auth_context,node_auth_api,node_notifications_page,node_notification_context,node_notification_api toneMint
class node_task_model,node_slot_model,node_preference_model,node_university_model,node_conflict_model,node_notification_model,node_user_model,node_database toneRose
class node_user toneIndigo
```

## Components

### Web application

- [React entry](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/main.jsx): `frontend/src/main.jsx`
- [Page router](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/router/index.jsx): `frontend/src/router/index.jsx`
- [Task manager](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Tasks.jsx): `frontend/src/pages/Tasks.jsx`
- [Task state](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/contexts/TaskContext.jsx): `frontend/src/contexts/TaskContext.jsx`
- [Scheduler](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Scheduler.jsx): `frontend/src/pages/Scheduler.jsx`
- [Schedule timeline](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/components/Timeline/Timeline.jsx): `frontend/src/components/Timeline/Timeline.jsx`
- [Study preferences](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Preferences.jsx): `frontend/src/pages/Preferences.jsx`
- [University schedule](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/UniversitySchedule.jsx): `frontend/src/pages/UniversitySchedule.jsx`
- [Conflict review](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Conflicts.jsx): `frontend/src/pages/Conflicts.jsx`
- [Analytics](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Analytics.jsx): `frontend/src/pages/Analytics.jsx`
- [Dashboard](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [HTTP API client](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### Planning API

- [Task operations](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/TaskController.php): `backend/app/Http/Controllers/API/TaskController.php`
- [Scheduling engine](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Services/SchedulingEngine.php): `backend/app/Services/SchedulingEngine.php`
- [Scheduled slots](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/ScheduledSlotController.php): `backend/app/Http/Controllers/API/ScheduledSlotController.php`
- [University schedule API](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/UniversityScheduleController.php): `backend/app/Http/Controllers/API/UniversityScheduleController.php`
- [Overlap validation](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Services/OverlapHelper.php): `backend/app/Services/OverlapHelper.php`

### Accounts and alerts

- [Sign in and registration](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Auth.jsx): `frontend/src/pages/Auth.jsx`
- [Authentication state](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/contexts/AuthContext.jsx): `frontend/src/contexts/AuthContext.jsx`
- [Authentication API](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/AuthController.php): `backend/app/Http/Controllers/API/AuthController.php`
- [Notifications](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/pages/Notifications.jsx): `frontend/src/pages/Notifications.jsx`
- [Notification state](https://github.com/majdalsaaty/task-management-v1/blob/main/frontend/src/contexts/NotificationContext.jsx): `frontend/src/contexts/NotificationContext.jsx`
- [Notification API](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Http/Controllers/API/NotificationController.php): `backend/app/Http/Controllers/API/NotificationController.php`

### Application data

- [Tasks](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/Task.php): `backend/app/Models/Task.php`
- [Scheduled slots](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/ScheduledSlot.php): `backend/app/Models/ScheduledSlot.php`
- [Daily preferences](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/UserDailyPreference.php): `backend/app/Models/UserDailyPreference.php`
- [University commitments](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/UniversitySchedule.php): `backend/app/Models/UniversitySchedule.php`
- [Conflict logs](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/ConflictLog.php): `backend/app/Models/ConflictLog.php`
- [Notifications](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/Notification.php): `backend/app/Models/Notification.php`
- [User accounts](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/app/Models/User.php): `backend/app/Models/User.php`
- [Relational database](https://github.com/majdalsaaty/task-management-v1/blob/main/backend/config/database.php): `backend/config/database.php`

### Other components

- **Student**

## Connections

- Student → React entry: opens app
- React entry → Page router: mounts routes
- Task manager → Task state: uses task state
- Student → Task manager: manages tasks
- Student → Scheduler: plans study
- Scheduler → Schedule timeline: displays schedule
- Task operations → Scheduling engine: invokes scheduling
- Task operations → Daily preferences: loads preferences
- Task operations → Notifications: creates alerts
- Scheduling engine → Tasks: reads tasks
- Scheduling engine → Scheduled slots: reads and writes slots
- Scheduling engine → Daily preferences: reads preferences
- Scheduling engine → University commitments: reads commitments
- Scheduling engine → Conflict logs: refreshes conflicts
- Scheduled slots → Scheduled slots: manages slots
- University schedule API → Overlap validation: checks overlap
- University schedule API → University commitments: manages commitments
- Authentication API → User accounts: manages accounts
- Notification API → Notifications: manages notifications
- User accounts → Relational database: persists
- Tasks → Relational database: persists
- Scheduled slots → Relational database: persists
- Daily preferences → Relational database: persists
- University commitments → Relational database: persists
- Conflict logs → Relational database: persists
- Notifications → Relational database: persists
