# xygritte/mytask-academic-planer-app architecture

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

- Interactive diagram: https://gitdiagram.com/xygritte/mytask-academic-planer-app
- Repository: https://github.com/xygritte/mytask-academic-planer-app

## Overview

MyTask is an Android academic planner for managing courses, tasks and class schedules, with calendar/dashboard views, reminders, account-based cloud sync, templates and backup/restore. The main entry point gates access to the workspace and coordinates account sync; feature screens provide the planning workflow, while repositories connect it to local and cloud state. The README is only a one-line product description, and several feature implementations were not sampled, so uncertain internal wiring is omitted.

Main entry points: [`app/src/main/java/com/mytask/navigation/NavGraph.kt`](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/navigation/NavGraph.kt) (Navigation), [`app/src/main/java/com/mytask/MainActivity.kt`](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/MainActivity.kt) (App entry), [`app/src/main/java/com/mytask/data/repository/FirebaseAuthRepository.kt`](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/FirebaseAuthRepository.kt) (Firebase auth), [`app/src/main/java/com/mytask/data/repository/CloudDataSyncRepositoryEntityMerge.kt`](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/CloudDataSyncRepositoryEntityMerge.kt) (Cloud data sync)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App and access"]
  node_activity["App entry<br/>[MainActivity.kt]"]
  node_navigation["Navigation<br/>[NavGraph.kt]"]
  node_login["Login screens<br/>[LoginScreen.kt]"]
end

subgraph group_planning["Academic planning"]
  node_dashboard["Dashboard<br/>[DashboardScreen.kt]"]
  node_calendar["Calendar<br/>[CalendarScreen.kt]"]
  node_courses["Course management"]
  node_tasks["Task management<br/>[TaskListScreen.kt]"]
  node_schedules["Schedule management<br/>[ScheduleScreen.kt]"]
  node_templates["Academic templates"]
end

subgraph group_data["Data and accounts"]
  node_course_repo["Course repository"]
  node_task_repo["Task repository<br/>[TaskRepository.kt]"]
  node_schedule_repo["Schedule repository"]
  node_template_apply["Template application"]
  node_database[("Room database<br/>[MyTaskDatabase.kt]")]
  node_auth_repo["Firebase auth"]
  node_profile_store[("Profile state")]
  node_cloud_sync["Cloud data sync"]
  node_backup["Backup and restore"]
end

subgraph group_reminders["Reminders"]
  node_notification_settings["Reminder settings"]
  node_scheduler["Reminder scheduler"]
  node_worker["Daily reminder worker"]
  node_notification["Notification delivery"]
end

node_student(("Student"))
node_firestore{{"Firebase services"}}

node_student -->|"opens"| node_activity
node_activity -->|"hosts"| node_navigation
node_activity -->|"checks session"| node_auth_repo
node_activity -->|"syncs account data"| node_cloud_sync
node_activity -->|"shows access gate"| node_login
node_student -->|"uses planner"| node_dashboard
node_navigation -->|"routes"| node_dashboard
node_navigation -->|"routes"| node_calendar
node_navigation -->|"routes"| node_courses
node_navigation -->|"routes"| node_tasks
node_navigation -->|"routes"| node_schedules
node_navigation -->|"routes"| node_login
node_auth_repo -->|"stores profile state"| node_profile_store
node_auth_repo -->|"coordinates data sync"| node_cloud_sync
node_auth_repo -->|"reads profile"| node_firestore
node_cloud_sync -->|"reads and replaces"| node_database
node_cloud_sync -->|"merges cloud data"| node_firestore
node_backup -->|"exports and imports"| node_database
node_templates -->|"applies selection"| node_template_apply
node_notification_settings -->|"configures reminders"| node_scheduler
node_scheduler -->|"schedules work"| node_worker
node_worker -->|"reads tasks and schedules"| node_database
node_worker -->|"posts or cancels"| node_notification

click node_activity "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/MainActivity.kt"
click node_navigation "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/navigation/NavGraph.kt"
click node_login "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/login/LoginScreen.kt"
click node_dashboard "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/dashboard/DashboardScreen.kt"
click node_calendar "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/calendar/CalendarScreen.kt"
click node_courses "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/course/CourseListScreen.kt"
click node_tasks "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/task/TaskListScreen.kt"
click node_schedules "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/schedule/ScheduleScreen.kt"
click node_templates "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/template/AcademicTemplateDialog.kt"
click node_course_repo "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/CourseRepository.kt"
click node_task_repo "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/TaskRepository.kt"
click node_schedule_repo "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/ScheduleRepository.kt"
click node_template_apply "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/TemplateApplyRepository.kt"
click node_database "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/local/MyTaskDatabase.kt"
click node_auth_repo "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/FirebaseAuthRepository.kt"
click node_profile_store "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/UserProfileRepository.kt"
click node_cloud_sync "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/CloudDataSyncRepositoryEntityMerge.kt"
click node_backup "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/BackupRepository.kt"
click node_notification_settings "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/profile/NotificationSettingsScreen.kt"
click node_scheduler "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/Notification/ReminderScheduler.kt"
click node_worker "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/Notification/DailyReminderWorker.kt"
click node_notification "https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/Notification/NotificationHelper.kt"

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_activity,node_navigation,node_login toneBlue
class node_dashboard,node_calendar,node_courses,node_tasks,node_schedules,node_templates toneAmber
class node_course_repo,node_task_repo,node_schedule_repo,node_template_apply,node_database,node_auth_repo,node_profile_store,node_cloud_sync,node_backup toneMint
class node_notification_settings,node_scheduler,node_worker,node_notification toneRose
class node_student,node_firestore toneIndigo
```

## Components

### App and access

- [App entry](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/MainActivity.kt): `app/src/main/java/com/mytask/MainActivity.kt`
- [Navigation](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/navigation/NavGraph.kt): `app/src/main/java/com/mytask/navigation/NavGraph.kt`
- [Login screens](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/login/LoginScreen.kt): `app/src/main/java/com/mytask/ui/login/LoginScreen.kt`

### Academic planning

- [Dashboard](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/dashboard/DashboardScreen.kt): `app/src/main/java/com/mytask/ui/dashboard/DashboardScreen.kt`
- [Calendar](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/calendar/CalendarScreen.kt): `app/src/main/java/com/mytask/ui/calendar/CalendarScreen.kt`
- [Course management](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/course/CourseListScreen.kt): `app/src/main/java/com/mytask/ui/course/CourseListScreen.kt`
- [Task management](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/task/TaskListScreen.kt): `app/src/main/java/com/mytask/ui/task/TaskListScreen.kt`
- [Schedule management](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/schedule/ScheduleScreen.kt): `app/src/main/java/com/mytask/ui/schedule/ScheduleScreen.kt`
- [Academic templates](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/template/AcademicTemplateDialog.kt): `app/src/main/java/com/mytask/ui/template/AcademicTemplateDialog.kt`

### Data and accounts

- [Course repository](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/CourseRepository.kt): `app/src/main/java/com/mytask/data/repository/CourseRepository.kt`
- [Task repository](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/TaskRepository.kt): `app/src/main/java/com/mytask/data/repository/TaskRepository.kt`
- [Schedule repository](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/ScheduleRepository.kt): `app/src/main/java/com/mytask/data/repository/ScheduleRepository.kt`
- [Template application](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/TemplateApplyRepository.kt): `app/src/main/java/com/mytask/data/repository/TemplateApplyRepository.kt`
- [Room database](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/local/MyTaskDatabase.kt): `app/src/main/java/com/mytask/data/local/MyTaskDatabase.kt`
- [Firebase auth](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/FirebaseAuthRepository.kt): `app/src/main/java/com/mytask/data/repository/FirebaseAuthRepository.kt`
- [Profile state](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/UserProfileRepository.kt): `app/src/main/java/com/mytask/data/repository/UserProfileRepository.kt`
- [Cloud data sync](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/CloudDataSyncRepositoryEntityMerge.kt): `app/src/main/java/com/mytask/data/repository/CloudDataSyncRepositoryEntityMerge.kt`
- [Backup and restore](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/data/repository/BackupRepository.kt): `app/src/main/java/com/mytask/data/repository/BackupRepository.kt`

### Reminders

- [Reminder settings](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/ui/profile/NotificationSettingsScreen.kt): `app/src/main/java/com/mytask/ui/profile/NotificationSettingsScreen.kt`
- [Reminder scheduler](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/Notification/ReminderScheduler.kt): `app/src/main/java/com/mytask/Notification/ReminderScheduler.kt`
- [Daily reminder worker](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/Notification/DailyReminderWorker.kt): `app/src/main/java/com/mytask/Notification/DailyReminderWorker.kt`
- [Notification delivery](https://github.com/xygritte/mytask-academic-planer-app/blob/main/app/src/main/java/com/mytask/Notification/NotificationHelper.kt): `app/src/main/java/com/mytask/Notification/NotificationHelper.kt`

### Other components

- **Student**
- **Firebase services**

## Connections

- Student → App entry: opens
- App entry → Navigation: hosts
- App entry → Firebase auth: checks session
- App entry → Cloud data sync: syncs account data
- App entry → Login screens: shows access gate
- Student → Dashboard: uses planner
- Navigation → Dashboard: routes
- Navigation → Calendar: routes
- Navigation → Course management: routes
- Navigation → Task management: routes
- Navigation → Schedule management: routes
- Navigation → Login screens: routes
- Firebase auth → Profile state: stores profile state
- Firebase auth → Cloud data sync: coordinates data sync
- Firebase auth → Firebase services: reads profile
- Cloud data sync → Room database: reads and replaces
- Cloud data sync → Firebase services: merges cloud data
- Backup and restore → Room database: exports and imports
- Academic templates → Template application: applies selection
- Reminder settings → Reminder scheduler: configures reminders
- Reminder scheduler → Daily reminder worker: schedules work
- Daily reminder worker → Room database: reads tasks and schedules
- Daily reminder worker → Notification delivery: posts or cancels
