# rudrajeetcodes/project-orion architecture

> Architecture diagram of the GitHub repository rudrajeetcodes/project-orion, 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/rudrajeetcodes/project-orion
- Repository: https://github.com/rudrajeetcodes/project-orion

## Overview

Orion is a Discord slash-command bot for personal tasks and scheduled reminders. Users invoke task and reminder commands; command handlers use services to query or mutate SQLite-backed records and respond in Discord. A background worker checks due reminders every 10 seconds and sends them to the configured owner. Task statistics and reminder counts feed a dynamic status message. The graph preserves the documented command capabilities, though reminder-command details and several wiring relationships are supported only by the README or SOURCE INDEX rather than excerpts.

Main entry points: [`bot/client.py`](https://github.com/rudrajeetcodes/project-orion/blob/main/bot/client.py) (Discord client), [`bot/commands/task.py`](https://github.com/rudrajeetcodes/project-orion/blob/main/bot/commands/task.py) (Task commands), [`services/status_message_service.py`](https://github.com/rudrajeetcodes/project-orion/blob/main/services/status_message_service.py) (Status message), [`workers/reminder_worker.py`](https://github.com/rudrajeetcodes/project-orion/blob/main/workers/reminder_worker.py) (Reminder worker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Bot runtime"]
  node_main["Application entry<br/>[main.py]"]
  node_config["Runtime config<br/>[config.py]"]
  node_client["Discord client<br/>[client.py]"]
end

subgraph group_tasks["Task management"]
  node_task_commands["Task commands<br/>[task.py]"]
  node_task_service["Task operations<br/>[task_service.py]"]
end

subgraph group_reminders["Reminder delivery"]
  node_reminder_commands["Reminder commands<br/>[reminder.py]"]
  node_reminder_service["Reminder operations"]
  node_worker["Reminder worker<br/>[reminder_worker.py]"]
end

subgraph group_status["Status display"]
  node_status_message["Status message"]
  node_status_builder["Status summary<br/>[status_service.py]"]
end

subgraph group_storage["Persistence"]
  node_task_model["Task records<br/>[task.py]"]
  node_reminder_model["Reminder records<br/>[reminder.py]"]
  node_session["Session factory<br/>[session.py]"]
  node_engine["Database engine<br/>[engine.py]"]
end

node_user(("Discord user"))
node_discord{{"Discord API"}}
node_owner(("Bot owner"))
node_sqlite[("SQLite database")]

node_user -->|"invokes commands"| node_discord
node_discord -->|"routes task commands"| node_task_commands
node_discord -->|"routes reminder commands"| node_reminder_commands
node_main -->|"starts client"| node_client
node_main -->|"loads settings"| node_config
node_main -->|"initializes database"| node_engine
node_client -->|"reads guild settings"| node_config
node_client -->|"registers commands"| node_task_commands
node_client -->|"registers commands"| node_reminder_commands
node_client -->|"updates status"| node_status_message
node_client -->|"starts worker"| node_worker
node_task_commands -->|"opens sessions"| node_session
node_task_commands -->|"calls task operations"| node_task_service
node_task_commands -->|"refreshes after changes"| node_status_message
node_task_commands -->|"requests statistics"| node_status_builder
node_task_service -->|"queries and mutates"| node_task_model
node_reminder_commands -->|"opens sessions"| node_session
node_reminder_commands -->|"calls reminder operations"| node_reminder_service
node_worker -->|"opens sessions"| node_session
node_worker -->|"checks and marks due"| node_reminder_service
node_worker -->|"reads owner setting"| node_config
node_worker -->|"fetches user and sends DM"| node_discord
node_discord -->|"delivers reminder"| node_owner
node_reminder_service -->|"queries and mutates"| node_reminder_model
node_status_message -->|"opens session"| node_session
node_status_message -->|"builds content"| node_status_builder
node_status_message -->|"reads channel settings"| node_config
node_status_message -->|"fetches or edits message"| node_discord
node_status_builder -->|"gets task statistics"| node_task_service
node_status_builder -->|"gets reminder counts"| node_reminder_service
node_session -->|"binds sessions"| node_engine
node_engine -->|"stores records"| node_sqlite

click node_main "https://github.com/rudrajeetcodes/project-orion/blob/main/main.py"
click node_config "https://github.com/rudrajeetcodes/project-orion/blob/main/config.py"
click node_client "https://github.com/rudrajeetcodes/project-orion/blob/main/bot/client.py"
click node_task_commands "https://github.com/rudrajeetcodes/project-orion/blob/main/bot/commands/task.py"
click node_task_service "https://github.com/rudrajeetcodes/project-orion/blob/main/services/task_service.py"
click node_task_model "https://github.com/rudrajeetcodes/project-orion/blob/main/database/models/task.py"
click node_reminder_commands "https://github.com/rudrajeetcodes/project-orion/blob/main/bot/commands/reminder.py"
click node_reminder_service "https://github.com/rudrajeetcodes/project-orion/blob/main/services/reminder_service.py"
click node_reminder_model "https://github.com/rudrajeetcodes/project-orion/blob/main/database/models/reminder.py"
click node_worker "https://github.com/rudrajeetcodes/project-orion/blob/main/workers/reminder_worker.py"
click node_status_message "https://github.com/rudrajeetcodes/project-orion/blob/main/services/status_message_service.py"
click node_status_builder "https://github.com/rudrajeetcodes/project-orion/blob/main/services/status_service.py"
click node_session "https://github.com/rudrajeetcodes/project-orion/blob/main/database/session.py"
click node_engine "https://github.com/rudrajeetcodes/project-orion/blob/main/database/engine.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_main,node_config,node_client,node_user toneBlue
class node_task_commands,node_task_service,node_sqlite toneAmber
class node_reminder_commands,node_reminder_service,node_worker,node_discord toneMint
class node_status_message,node_status_builder toneRose
class node_task_model,node_reminder_model,node_session,node_engine,node_owner toneIndigo
```

## Components

### Bot runtime

- [Application entry](https://github.com/rudrajeetcodes/project-orion/blob/main/main.py): `main.py`
- [Runtime config](https://github.com/rudrajeetcodes/project-orion/blob/main/config.py): `config.py`
- [Discord client](https://github.com/rudrajeetcodes/project-orion/blob/main/bot/client.py): `bot/client.py`

### Task management

- [Task commands](https://github.com/rudrajeetcodes/project-orion/blob/main/bot/commands/task.py): `bot/commands/task.py`
- [Task operations](https://github.com/rudrajeetcodes/project-orion/blob/main/services/task_service.py): `services/task_service.py`

### Reminder delivery

- [Reminder commands](https://github.com/rudrajeetcodes/project-orion/blob/main/bot/commands/reminder.py): `bot/commands/reminder.py`
- [Reminder operations](https://github.com/rudrajeetcodes/project-orion/blob/main/services/reminder_service.py): `services/reminder_service.py`
- [Reminder worker](https://github.com/rudrajeetcodes/project-orion/blob/main/workers/reminder_worker.py): `workers/reminder_worker.py`

### Status display

- [Status message](https://github.com/rudrajeetcodes/project-orion/blob/main/services/status_message_service.py): `services/status_message_service.py`
- [Status summary](https://github.com/rudrajeetcodes/project-orion/blob/main/services/status_service.py): `services/status_service.py`

### Persistence

- [Task records](https://github.com/rudrajeetcodes/project-orion/blob/main/database/models/task.py): `database/models/task.py`
- [Reminder records](https://github.com/rudrajeetcodes/project-orion/blob/main/database/models/reminder.py): `database/models/reminder.py`
- [Session factory](https://github.com/rudrajeetcodes/project-orion/blob/main/database/session.py): `database/session.py`
- [Database engine](https://github.com/rudrajeetcodes/project-orion/blob/main/database/engine.py): `database/engine.py`

### Other components

- **Discord user**
- **Discord API**
- **Bot owner**
- **SQLite database**

## Connections

- Discord user → Discord API: invokes commands (evidence: `README.md`)
- Discord API → Task commands: routes task commands (evidence: `README.md`)
- Discord API → Reminder commands: routes reminder commands (evidence: `README.md`)
- Application entry → Discord client: starts client (evidence: `main.py`)
- Application entry → Runtime config: loads settings (evidence: `main.py`)
- Application entry → Database engine: initializes database (evidence: `main.py`)
- Discord client → Runtime config: reads guild settings (evidence: `bot/client.py`)
- Discord client → Task commands: registers commands (evidence: `bot/client.py`)
- Discord client → Reminder commands: registers commands (evidence: `bot/client.py`)
- Discord client → Status message: updates status (evidence: `bot/client.py`)
- Discord client → Reminder worker: starts worker (evidence: `bot/client.py`)
- Task commands → Session factory: opens sessions (evidence: `bot/commands/task.py`)
- Task commands → Task operations: calls task operations (evidence: `bot/commands/task.py`)
- Task commands → Status message: refreshes after changes (evidence: `bot/commands/task.py`)
- Task commands → Status summary: requests statistics (evidence: `bot/commands/task.py`)
- Task operations → Task records: queries and mutates (evidence: `services/task_service.py`)
- Reminder commands → Session factory: opens sessions (evidence: `bot/commands/reminder.py`)
- Reminder commands → Reminder operations: calls reminder operations (evidence: `bot/commands/reminder.py`)
- Reminder worker → Session factory: opens sessions (evidence: `workers/reminder_worker.py`)
- Reminder worker → Reminder operations: checks and marks due (evidence: `workers/reminder_worker.py`)
- Reminder worker → Runtime config: reads owner setting (evidence: `workers/reminder_worker.py`)
- Reminder worker → Discord API: fetches user and sends DM (evidence: `workers/reminder_worker.py`)
- Discord API → Bot owner: delivers reminder (evidence: `README.md`)
- Reminder operations → Reminder records: queries and mutates (evidence: `services/reminder_service.py`)
- Status message → Session factory: opens session (evidence: `services/status_message_service.py`)
- Status message → Status summary: builds content (evidence: `services/status_message_service.py`)
- Status message → Runtime config: reads channel settings (evidence: `services/status_message_service.py`)
- Status message → Discord API: fetches or edits message (evidence: `services/status_message_service.py`)
- Status summary → Task operations: gets task statistics (evidence: `services/status_service.py`)
- Status summary → Reminder operations: gets reminder counts (evidence: `services/status_service.py`)
- Session factory → Database engine: binds sessions (evidence: `database/session.py`)
- Database engine → SQLite database: stores records (evidence: `database/engine.py`)
