# abhishek-verse/d-forget architecture

> Architecture diagram of the GitHub repository abhishek-verse/d-forget, 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/abhishek-verse/d-forget
- Repository: https://github.com/abhishek-verse/d-forget

## Overview

AI Task Organizer turns pasted or shared information and documents into AI task proposals for user review; confirmed tasks and reminders are then managed locally in Android. The backend provides analysis, PDF extraction, and OCR, while Android owns task storage and notification scheduling. The README documents additional input and task-management capabilities that are not fully shown in the sampled source, so those links are represented only where the tree and documentation support them. Backend route-to-service wiring is not sampled.

Main entry points: [`backend/app/routes/analysis.py`](https://github.com/abhishek-verse/d-forget/blob/main/backend/app/routes/analysis.py) (Analysis endpoint), [`android/app/src/main/java/com/aitaskorganizer/app/data/repository/SourceRepository.kt`](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/repository/SourceRepository.kt) (Source repository), [`android/app/src/main/java/com/aitaskorganizer/app/ui/inbox/viewmodel/InboxViewModel.kt`](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/ui/inbox/viewmodel/InboxViewModel.kt) (Inbox state), [`android/app/src/main/java/com/aitaskorganizer/app/data/remote/api/SourceApi.kt`](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/remote/api/SourceApi.kt) (Analysis API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_android_app["Android app"]
  node_app_host["App navigation<br/>[MainActivity.kt]"]
  node_inbox["AI Inbox"]
  node_inbox_vm["Inbox state<br/>[InboxViewModel.kt]"]
  node_analysis_vm["Analysis state"]
  node_proposal_review["Proposal review"]
  node_task_ui["Task management"]
  node_home_completed["Home and completed"]
  node_source_view["Source transparency"]
  node_source_repo["Source repository"]
  node_source_api["Analysis API client<br/>[SourceApi.kt]"]
  node_task_vm["Task state<br/>[TasksViewModel.kt]"]
end

subgraph group_local_data["Local task data"]
  node_task_repo["Task repository<br/>[TaskRepository.kt]"]
  node_reminder_repo["Reminder repository"]
  node_room[("Room database<br/>[AppDatabase.kt]")]
  node_scheduler["Reminder scheduler"]
  node_notification["Notification receiver"]
end

subgraph group_backend["Analysis backend"]
  node_fastapi["FastAPI application<br/>[main.py]"]
  node_analysis_route["Analysis endpoint<br/>[analysis.py]"]
  node_ai_service["AI analysis<br/>[ai_service.py]"]
end

subgraph group_processing["Document processing"]
  node_pdf_service["PDF extraction<br/>[pdf_service.py]"]
  node_ocr_service["Image OCR<br/>[ocr_service.py]"]
end

node_user(("User"))
node_external_ai{{"External AI provider"}}
node_android_system{{"Android system"}}

node_user -->|"opens"| node_app_host
node_app_host -->|"navigates"| node_inbox
node_user -->|"provides input"| node_inbox
node_inbox -->|"submits input"| node_inbox_vm
node_inbox_vm -->|"requests analysis"| node_source_repo
node_source_repo -->|"calls"| node_source_api
node_source_api -->|"sends analysis request"| node_fastapi
node_fastapi -->|"dispatches"| node_analysis_route
node_analysis_route -->|"extracts PDF text"| node_pdf_service
node_analysis_route -->|"extracts image text"| node_ocr_service
node_analysis_route -->|"requests analysis"| node_ai_service
node_ai_service -.->|"may call"| node_external_ai
node_analysis_route -->|"returns proposal"| node_source_api
node_source_api -->|"returns result"| node_source_repo
node_source_repo -->|"returns result"| node_inbox_vm
node_inbox_vm -->|"provides proposal"| node_analysis_vm
node_analysis_vm -->|"presents proposal"| node_proposal_review
node_user -->|"confirms or edits"| node_proposal_review
node_proposal_review -->|"saves confirmed task"| node_task_repo
node_task_ui -->|"shows task state"| node_task_vm
node_home_completed -->|"shows task state"| node_task_vm
node_task_vm -->|"observes and updates"| node_task_repo
node_task_repo -->|"reads and writes"| node_room
node_reminder_repo -->|"reads and writes"| node_room
node_task_ui -->|"manages reminders"| node_reminder_repo
node_scheduler -->|"loads active reminders"| node_reminder_repo
node_scheduler -->|"schedules alarms"| node_android_system
node_android_system -->|"delivers alarm"| node_notification
node_notification -->|"posts notification"| node_android_system
node_source_view -->|"loads source details"| node_source_repo

click node_app_host "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/MainActivity.kt"
click node_inbox "https://github.com/abhishek-verse/d-forget/tree/main/android/app/src/main/java/com/aitaskorganizer/app/ui/inbox"
click node_inbox_vm "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/ui/inbox/viewmodel/InboxViewModel.kt"
click node_analysis_vm "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/ui/analysis/viewmodel/AnalysisViewModel.kt"
click node_proposal_review "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/ui/analysis/AnalysisResultScreen.kt"
click node_task_ui "https://github.com/abhishek-verse/d-forget/tree/main/android/app/src/main/java/com/aitaskorganizer/app/ui/tasks"
click node_home_completed "https://github.com/abhishek-verse/d-forget/tree/main/android/app/src/main/java/com/aitaskorganizer/app/ui"
click node_source_view "https://github.com/abhishek-verse/d-forget/tree/main/android/app/src/main/java/com/aitaskorganizer/app/ui/source"
click node_source_repo "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/repository/SourceRepository.kt"
click node_source_api "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/remote/api/SourceApi.kt"
click node_task_vm "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/ui/tasks/viewmodel/TasksViewModel.kt"
click node_task_repo "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/repository/TaskRepository.kt"
click node_reminder_repo "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/repository/ReminderRepository.kt"
click node_room "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/local/database/AppDatabase.kt"
click node_scheduler "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/notifications/ReminderScheduler.kt"
click node_notification "https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/notifications/NotificationReceiver.kt"
click node_fastapi "https://github.com/abhishek-verse/d-forget/blob/main/backend/app/main.py"
click node_analysis_route "https://github.com/abhishek-verse/d-forget/blob/main/backend/app/routes/analysis.py"
click node_ai_service "https://github.com/abhishek-verse/d-forget/blob/main/backend/app/services/ai_service.py"
click node_pdf_service "https://github.com/abhishek-verse/d-forget/blob/main/backend/app/services/pdf_service.py"
click node_ocr_service "https://github.com/abhishek-verse/d-forget/blob/main/backend/app/services/ocr_service.py"

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_host,node_inbox,node_inbox_vm,node_analysis_vm,node_proposal_review,node_task_ui,node_home_completed,node_source_view,node_source_repo,node_source_api,node_task_vm,node_user toneBlue
class node_task_repo,node_reminder_repo,node_room,node_scheduler,node_notification toneAmber
class node_fastapi,node_analysis_route,node_ai_service toneMint
class node_pdf_service,node_ocr_service toneRose
class node_external_ai,node_android_system toneIndigo
```

## Components

### Android app

- [App navigation](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/MainActivity.kt): `android/app/src/main/java/com/aitaskorganizer/app/MainActivity.kt`
- [AI Inbox](https://github.com/abhishek-verse/d-forget/tree/main/android/app/src/main/java/com/aitaskorganizer/app/ui/inbox): `android/app/src/main/java/com/aitaskorganizer/app/ui/inbox`
- [Inbox state](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/ui/inbox/viewmodel/InboxViewModel.kt): `android/app/src/main/java/com/aitaskorganizer/app/ui/inbox/viewmodel/InboxViewModel.kt`
- [Analysis state](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/ui/analysis/viewmodel/AnalysisViewModel.kt): `android/app/src/main/java/com/aitaskorganizer/app/ui/analysis/viewmodel/AnalysisViewModel.kt`
- [Proposal review](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/ui/analysis/AnalysisResultScreen.kt): `android/app/src/main/java/com/aitaskorganizer/app/ui/analysis/AnalysisResultScreen.kt`
- [Task management](https://github.com/abhishek-verse/d-forget/tree/main/android/app/src/main/java/com/aitaskorganizer/app/ui/tasks): `android/app/src/main/java/com/aitaskorganizer/app/ui/tasks`
- [Home and completed](https://github.com/abhishek-verse/d-forget/tree/main/android/app/src/main/java/com/aitaskorganizer/app/ui): `android/app/src/main/java/com/aitaskorganizer/app/ui`
- [Source transparency](https://github.com/abhishek-verse/d-forget/tree/main/android/app/src/main/java/com/aitaskorganizer/app/ui/source): `android/app/src/main/java/com/aitaskorganizer/app/ui/source`
- [Source repository](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/repository/SourceRepository.kt): `android/app/src/main/java/com/aitaskorganizer/app/data/repository/SourceRepository.kt`
- [Analysis API client](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/remote/api/SourceApi.kt): `android/app/src/main/java/com/aitaskorganizer/app/data/remote/api/SourceApi.kt`
- [Task state](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/ui/tasks/viewmodel/TasksViewModel.kt): `android/app/src/main/java/com/aitaskorganizer/app/ui/tasks/viewmodel/TasksViewModel.kt`

### Local task data

- [Task repository](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/repository/TaskRepository.kt): `android/app/src/main/java/com/aitaskorganizer/app/data/repository/TaskRepository.kt`
- [Reminder repository](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/repository/ReminderRepository.kt): `android/app/src/main/java/com/aitaskorganizer/app/data/repository/ReminderRepository.kt`
- [Room database](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/data/local/database/AppDatabase.kt): `android/app/src/main/java/com/aitaskorganizer/app/data/local/database/AppDatabase.kt`
- [Reminder scheduler](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/notifications/ReminderScheduler.kt): `android/app/src/main/java/com/aitaskorganizer/app/notifications/ReminderScheduler.kt`
- [Notification receiver](https://github.com/abhishek-verse/d-forget/blob/main/android/app/src/main/java/com/aitaskorganizer/app/notifications/NotificationReceiver.kt): `android/app/src/main/java/com/aitaskorganizer/app/notifications/NotificationReceiver.kt`

### Analysis backend

- [FastAPI application](https://github.com/abhishek-verse/d-forget/blob/main/backend/app/main.py): `backend/app/main.py`
- [Analysis endpoint](https://github.com/abhishek-verse/d-forget/blob/main/backend/app/routes/analysis.py): `backend/app/routes/analysis.py`
- [AI analysis](https://github.com/abhishek-verse/d-forget/blob/main/backend/app/services/ai_service.py): `backend/app/services/ai_service.py`

### Document processing

- [PDF extraction](https://github.com/abhishek-verse/d-forget/blob/main/backend/app/services/pdf_service.py): `backend/app/services/pdf_service.py`
- [Image OCR](https://github.com/abhishek-verse/d-forget/blob/main/backend/app/services/ocr_service.py): `backend/app/services/ocr_service.py`

### Other components

- **User**
- **External AI provider**
- **Android system**

## Connections

- User → App navigation: opens
- App navigation → AI Inbox: navigates
- User → AI Inbox: provides input
- AI Inbox → Inbox state: submits input
- Inbox state → Source repository: requests analysis
- Source repository → Analysis API client: calls
- Analysis API client → FastAPI application: sends analysis request
- FastAPI application → Analysis endpoint: dispatches
- Analysis endpoint → PDF extraction: extracts PDF text
- Analysis endpoint → Image OCR: extracts image text
- Analysis endpoint → AI analysis: requests analysis
- AI analysis → External AI provider: may call
- Analysis endpoint → Analysis API client: returns proposal
- Analysis API client → Source repository: returns result
- Source repository → Inbox state: returns result
- Inbox state → Analysis state: provides proposal
- Analysis state → Proposal review: presents proposal
- User → Proposal review: confirms or edits
- Proposal review → Task repository: saves confirmed task
- Task management → Task state: shows task state
- Home and completed → Task state: shows task state
- Task state → Task repository: observes and updates
- Task repository → Room database: reads and writes
- Reminder repository → Room database: reads and writes
- Task management → Reminder repository: manages reminders
- Reminder scheduler → Reminder repository: loads active reminders
- Reminder scheduler → Android system: schedules alarms
- Android system → Notification receiver: delivers alarm
- Notification receiver → Android system: posts notification
- Source transparency → Source repository: loads source details
