# rahulkumarparida/omarchy-customizer architecture

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

- Interactive diagram: https://gitdiagram.com/rahulkumarparida/omarchy-customizer
- Repository: https://github.com/rahulkumarparida/omarchy-customizer

## Overview

Omarchy Customizer is a local-first web app for browsing and applying Hyprland desktop themes, plus managing theme presets, configuration backups, and raw config edits. The main flow is browser → React collections/details → HTTP API → service layer → local config files and system commands. The README documents all five theme collections and the backup, bucket, and editor capabilities; sampled source confirms theme-route/service calls, while wiring for the other route families is represented only where supported by the tree and documentation.

Main entry points: [`Backend/app/api/routers.py`](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routers.py) (API router), [`Frontend/src/api/api.js`](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/api/api.js) (HTTP client), [`Frontend/src/App.jsx`](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/App.jsx) (React app), [`Backend/app/services/file_services.py`](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/file_services.py) (File operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Browser experience"]
  node_app["React app<br/>[App.jsx]"]
  node_collections["Theme collections"]
  node_details["Theme details"]
  node_buckets_ui["Bucket presets"]
  node_backups_ui["Backup interface<br/>[BackupPage.jsx]"]
  node_editor_ui["Config editor<br/>[EditorPage.jsx]"]
  node_api_client["HTTP client<br/>[api.js]"]
end

subgraph group_api["API routes"]
  node_api_router["API router<br/>[routers.py]"]
  node_theme_routes["Theme routes<br/>[theme_routes.py]"]
  node_bucket_routes["Bucket routes<br/>[bucket_routes.py]"]
  node_backup_routes["Backup routes<br/>[backup_routes.py]"]
  node_editor_routes["Editor routes<br/>[editor_routes.py]"]
  node_fastfetch_routes["Fastfetch routes"]
end

subgraph group_services["Application services"]
  node_theme_service["Theme operations<br/>[theme_services.py]"]
  node_bucket_service["Bucket operations<br/>[bucket_service.py]"]
  node_backup_service["Backup operations<br/>[backup_service.py]"]
  node_editor_service["Editor operations<br/>[editor_services.py]"]
  node_fastfetch_service["Fastfetch catalog"]
  node_file_service["File operations<br/>[file_services.py]"]
  node_command_service["System commands"]
end

subgraph group_system["Local system"]
  node_local_configs[("Desktop configs")]
  node_app_data[("Customizer data")]
end

node_user(("Desktop user"))
node_linux(("Linux desktop"))

node_user -->|"uses"| node_app
node_app -->|"shows"| node_collections
node_app -->|"opens"| node_buckets_ui
node_app -->|"opens"| node_backups_ui
node_app -->|"opens"| node_editor_ui
node_collections -->|"opens"| node_details
node_collections -->|"requests themes"| node_api_client
node_details -->|"requests details or apply"| node_api_client
node_buckets_ui -->|"manages presets"| node_api_client
node_backups_ui -->|"manages backups"| node_api_client
node_editor_ui -->|"loads and saves"| node_api_client
node_api_client -->|"HTTP requests"| node_api_router
node_api_router -->|"dispatches"| node_theme_routes
node_api_router -->|"dispatches"| node_bucket_routes
node_api_router -->|"dispatches"| node_backup_routes
node_api_router -->|"dispatches"| node_editor_routes
node_api_router -->|"dispatches"| node_fastfetch_routes
node_theme_routes -->|"calls"| node_theme_service
node_bucket_routes -->|"handles presets"| node_bucket_service
node_backup_routes -->|"handles backups"| node_backup_service
node_editor_routes -->|"handles edits"| node_editor_service
node_fastfetch_routes -->|"loads catalog"| node_fastfetch_service
node_theme_service -->|"edits config files"| node_file_service
node_theme_service -->|"runs commands"| node_command_service
node_backup_service -->|"copies configs"| node_file_service
node_editor_service -->|"reads and writes"| node_file_service
node_bucket_service -->|"stores presets"| node_app_data
node_backup_service -->|"stores snapshots"| node_app_data
node_editor_service -->|"stores history"| node_app_data
node_fastfetch_service -->|"reads catalog"| node_app_data
node_file_service -->|"reads and writes"| node_local_configs
node_command_service -->|"executes locally"| node_linux
node_linux -->|"uses"| node_local_configs

click node_app "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/App.jsx"
click node_collections "https://github.com/rahulkumarparida/omarchy-customizer/tree/main/Frontend/src/components"
click node_details "https://github.com/rahulkumarparida/omarchy-customizer/tree/main/Frontend/src/components/ui"
click node_buckets_ui "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/pages/BucketCollectionPage.jsx"
click node_backups_ui "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/pages/BackupPage.jsx"
click node_editor_ui "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/pages/EditorPage.jsx"
click node_api_client "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/api/api.js"
click node_api_router "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routers.py"
click node_theme_routes "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routes/theme_routes.py"
click node_bucket_routes "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routes/bucket_routes.py"
click node_backup_routes "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routes/backup_routes.py"
click node_editor_routes "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routes/editor_routes.py"
click node_fastfetch_routes "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routes/fastfetch_routes.py"
click node_theme_service "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/theme_services.py"
click node_bucket_service "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/bucket_service.py"
click node_backup_service "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/backup_service.py"
click node_editor_service "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/editor_services.py"
click node_fastfetch_service "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/fastfetch_services.py"
click node_file_service "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/file_services.py"
click node_command_service "https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/command_services.py"
click node_app_data "https://github.com/rahulkumarparida/omarchy-customizer/tree/main/Backend/app/store"

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_collections,node_details,node_buckets_ui,node_backups_ui,node_editor_ui,node_api_client,node_user toneBlue
class node_api_router,node_theme_routes,node_bucket_routes,node_backup_routes,node_editor_routes,node_fastfetch_routes toneAmber
class node_theme_service,node_bucket_service,node_backup_service,node_editor_service,node_fastfetch_service,node_file_service,node_command_service toneMint
class node_local_configs,node_app_data toneRose
class node_linux toneIndigo
```

## Components

### Browser experience

- [React app](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/App.jsx): `Frontend/src/App.jsx`
- [Theme collections](https://github.com/rahulkumarparida/omarchy-customizer/tree/main/Frontend/src/components): `Frontend/src/components`
- [Theme details](https://github.com/rahulkumarparida/omarchy-customizer/tree/main/Frontend/src/components/ui): `Frontend/src/components/ui`
- [Bucket presets](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/pages/BucketCollectionPage.jsx): `Frontend/src/pages/BucketCollectionPage.jsx`
- [Backup interface](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/pages/BackupPage.jsx): `Frontend/src/pages/BackupPage.jsx`
- [Config editor](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/pages/EditorPage.jsx): `Frontend/src/pages/EditorPage.jsx`
- [HTTP client](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Frontend/src/api/api.js): `Frontend/src/api/api.js`

### API routes

- [API router](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routers.py): `Backend/app/api/routers.py`
- [Theme routes](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routes/theme_routes.py): `Backend/app/api/routes/theme_routes.py`
- [Bucket routes](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routes/bucket_routes.py): `Backend/app/api/routes/bucket_routes.py`
- [Backup routes](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routes/backup_routes.py): `Backend/app/api/routes/backup_routes.py`
- [Editor routes](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routes/editor_routes.py): `Backend/app/api/routes/editor_routes.py`
- [Fastfetch routes](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/api/routes/fastfetch_routes.py): `Backend/app/api/routes/fastfetch_routes.py`

### Application services

- [Theme operations](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/theme_services.py): `Backend/app/services/theme_services.py`
- [Bucket operations](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/bucket_service.py): `Backend/app/services/bucket_service.py`
- [Backup operations](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/backup_service.py): `Backend/app/services/backup_service.py`
- [Editor operations](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/editor_services.py): `Backend/app/services/editor_services.py`
- [Fastfetch catalog](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/fastfetch_services.py): `Backend/app/services/fastfetch_services.py`
- [File operations](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/file_services.py): `Backend/app/services/file_services.py`
- [System commands](https://github.com/rahulkumarparida/omarchy-customizer/blob/main/Backend/app/services/command_services.py): `Backend/app/services/command_services.py`

### Local system

- **Desktop configs**
- [Customizer data](https://github.com/rahulkumarparida/omarchy-customizer/tree/main/Backend/app/store): `Backend/app/store`

### Other components

- **Desktop user**
- **Linux desktop**

## Connections

- Desktop user → React app: uses
- React app → Theme collections: shows
- React app → Bucket presets: opens
- React app → Backup interface: opens
- React app → Config editor: opens
- Theme collections → Theme details: opens
- Theme collections → HTTP client: requests themes
- Theme details → HTTP client: requests details or apply
- Bucket presets → HTTP client: manages presets
- Backup interface → HTTP client: manages backups
- Config editor → HTTP client: loads and saves
- HTTP client → API router: HTTP requests
- API router → Theme routes: dispatches
- API router → Bucket routes: dispatches
- API router → Backup routes: dispatches
- API router → Editor routes: dispatches
- API router → Fastfetch routes: dispatches
- Theme routes → Theme operations: calls
- Bucket routes → Bucket operations: handles presets
- Backup routes → Backup operations: handles backups
- Editor routes → Editor operations: handles edits
- Fastfetch routes → Fastfetch catalog: loads catalog
- Theme operations → File operations: edits config files
- Theme operations → System commands: runs commands
- Backup operations → File operations: copies configs
- Editor operations → File operations: reads and writes
- Bucket operations → Customizer data: stores presets
- Backup operations → Customizer data: stores snapshots
- Editor operations → Customizer data: stores history
- Fastfetch catalog → Customizer data: reads catalog
- File operations → Desktop configs: reads and writes
- System commands → Linux desktop: executes locally
- Linux desktop → Desktop configs: uses
