# alireza-anari/loomera architecture

> Architecture diagram of the GitHub repository alireza-anari/loomera, 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/alireza-anari/loomera
- Repository: https://github.com/alireza-anari/loomera

## Overview

Loomera is a Django platform for discovering salons and services, booking appointments, and supporting customers and salon partners. The principal customer journey runs from discovery through availability and booking; partner dashboards, reviews, content, analytics, and messaging are substantial supporting capabilities. The tree and README establish product scope, while the source index and excerpts show only selected implementation relationships, so unsampled links are omitted rather than inferred.

Main entry points: [`apps/orders/models.py`](https://github.com/alireza-anari/loomera/blob/main/apps/orders/models.py) (Appointments and orders), [`apps/salons/models.py`](https://github.com/alireza-anari/loomera/blob/main/apps/salons/models.py) (Salon profiles), [`apps/messaging/actions.py`](https://github.com/alireza-anari/loomera/blob/main/apps/messaging/actions.py) (Messaging actions), [`apps/api/v1/booking_views.py`](https://github.com/alireza-anari/loomera/blob/main/apps/api/v1/booking_views.py) (Booking API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Discovery and content"]
  node_search["Salon search<br/>[services.py]"]
  node_salons[("Salon profiles<br/>[models.py]")]
  node_services[("Service catalog<br/>[models.py]")]
  node_reviews[("Reviews and ratings<br/>[models.py]")]
  node_articles["Editorial content<br/>[services.py]"]
end

subgraph group_booking["Booking and partner operations"]
  node_booking_api["Booking API<br/>[booking_views.py]"]
  node_availability["Availability API"]
  node_orders[("Appointments and orders<br/>[models.py]")]
  node_partner_dashboard["Partner dashboards"]
  node_stylist_operations["Stylist operations"]
  node_payments[("Payment and ledger<br/>[models.py]")]
end

subgraph group_platform["Accounts and platform services"]
  node_accounts[("Accounts and roles<br/>[models.py]")]
  node_memberships["Salon memberships<br/>[membership.py]"]
  node_notifications["Notifications<br/>[services.py]"]
  node_analytics["Analytics and reports<br/>[services.py]"]
end

subgraph group_messaging["Messaging integrations"]
  node_messaging_core["Messaging actions<br/>[actions.py]"]
  node_messaging_state[("Messaging identities<br/>[models.py]")]
  node_bale["Bale bot<br/>[handlers.py]"]
  node_telegram["Telegram bot<br/>[client.py]"]
  node_lumi["Loomi orchestration<br/>[orchestrator.py]"]
end

node_customer(("Customer"))
node_customer_app(("Customer web app"))

node_customer -->|"searches"| node_search
node_search -->|"queries"| node_salons
node_salons -->|"offers"| node_services
node_salons -->|"relates to"| node_reviews
node_customer -->|"requests booking"| node_booking_api
node_booking_api -.->|"checks slots"| node_availability
node_booking_api -.->|"creates booking"| node_orders
node_orders -->|"references"| node_salons
node_orders -->|"references"| node_services
node_partner_dashboard -.->|"manages appointments"| node_orders
node_stylist_operations -->|"uses appointment data"| node_orders
node_orders -.->|"tracks payment"| node_payments
node_memberships -->|"uses users"| node_accounts
node_memberships -->|"links stylists"| node_salons
node_notifications -->|"references events"| node_orders
node_analytics -->|"reports on"| node_orders
node_analytics -->|"reports on"| node_payments
node_articles -->|"uses review data"| node_reviews
node_customer_app -->|"initiates journey"| node_customer
node_bale -->|"dispatches actions"| node_messaging_core
node_telegram -->|"uses actions"| node_messaging_core
node_messaging_core -->|"records actions"| node_messaging_state
node_notifications -->|"adds action channels"| node_messaging_core
node_lumi -.->|"assists"| node_customer

click node_search "https://github.com/alireza-anari/loomera/blob/main/apps/search/services.py"
click node_salons "https://github.com/alireza-anari/loomera/blob/main/apps/salons/models.py"
click node_services "https://github.com/alireza-anari/loomera/blob/main/apps/services/models.py"
click node_reviews "https://github.com/alireza-anari/loomera/blob/main/apps/comments_scores_favories/models.py"
click node_articles "https://github.com/alireza-anari/loomera/blob/main/apps/articles/services.py"
click node_booking_api "https://github.com/alireza-anari/loomera/blob/main/apps/api/v1/booking_views.py"
click node_availability "https://github.com/alireza-anari/loomera/blob/main/apps/api/v1/availability_views.py"
click node_orders "https://github.com/alireza-anari/loomera/blob/main/apps/orders/models.py"
click node_partner_dashboard "https://github.com/alireza-anari/loomera/blob/main/apps/dashboards/appointment_management.py"
click node_stylist_operations "https://github.com/alireza-anari/loomera/blob/main/apps/stylists/dashboard_services.py"
click node_payments "https://github.com/alireza-anari/loomera/blob/main/apps/payments/models.py"
click node_accounts "https://github.com/alireza-anari/loomera/blob/main/apps/accounts/models.py"
click node_memberships "https://github.com/alireza-anari/loomera/blob/main/apps/salons/membership.py"
click node_notifications "https://github.com/alireza-anari/loomera/blob/main/apps/notifications/services.py"
click node_analytics "https://github.com/alireza-anari/loomera/blob/main/apps/analytics/services.py"
click node_messaging_core "https://github.com/alireza-anari/loomera/blob/main/apps/messaging/actions.py"
click node_messaging_state "https://github.com/alireza-anari/loomera/blob/main/apps/messaging/models.py"
click node_bale "https://github.com/alireza-anari/loomera/blob/main/apps/bale_bot/handlers.py"
click node_telegram "https://github.com/alireza-anari/loomera/blob/main/apps/telegram_bot/client.py"
click node_lumi "https://github.com/alireza-anari/loomera/blob/main/apps/lumi/orchestrator.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_search,node_salons,node_services,node_reviews,node_articles toneBlue
class node_booking_api,node_availability,node_orders,node_partner_dashboard,node_stylist_operations,node_payments toneAmber
class node_accounts,node_memberships,node_notifications,node_analytics toneMint
class node_messaging_core,node_messaging_state,node_bale,node_telegram,node_lumi toneRose
class node_customer,node_customer_app toneIndigo
```

## Components

### Discovery and content

- [Salon search](https://github.com/alireza-anari/loomera/blob/main/apps/search/services.py): `apps/search/services.py`
- [Salon profiles](https://github.com/alireza-anari/loomera/blob/main/apps/salons/models.py): `apps/salons/models.py`
- [Service catalog](https://github.com/alireza-anari/loomera/blob/main/apps/services/models.py): `apps/services/models.py`
- [Reviews and ratings](https://github.com/alireza-anari/loomera/blob/main/apps/comments_scores_favories/models.py): `apps/comments_scores_favories/models.py`
- [Editorial content](https://github.com/alireza-anari/loomera/blob/main/apps/articles/services.py): `apps/articles/services.py`

### Booking and partner operations

- [Booking API](https://github.com/alireza-anari/loomera/blob/main/apps/api/v1/booking_views.py): `apps/api/v1/booking_views.py`
- [Availability API](https://github.com/alireza-anari/loomera/blob/main/apps/api/v1/availability_views.py): `apps/api/v1/availability_views.py`
- [Appointments and orders](https://github.com/alireza-anari/loomera/blob/main/apps/orders/models.py): `apps/orders/models.py`
- [Partner dashboards](https://github.com/alireza-anari/loomera/blob/main/apps/dashboards/appointment_management.py): `apps/dashboards/appointment_management.py`
- [Stylist operations](https://github.com/alireza-anari/loomera/blob/main/apps/stylists/dashboard_services.py): `apps/stylists/dashboard_services.py`
- [Payment and ledger](https://github.com/alireza-anari/loomera/blob/main/apps/payments/models.py): `apps/payments/models.py`

### Accounts and platform services

- [Accounts and roles](https://github.com/alireza-anari/loomera/blob/main/apps/accounts/models.py): `apps/accounts/models.py`
- [Salon memberships](https://github.com/alireza-anari/loomera/blob/main/apps/salons/membership.py): `apps/salons/membership.py`
- [Notifications](https://github.com/alireza-anari/loomera/blob/main/apps/notifications/services.py): `apps/notifications/services.py`
- [Analytics and reports](https://github.com/alireza-anari/loomera/blob/main/apps/analytics/services.py): `apps/analytics/services.py`

### Messaging integrations

- [Messaging actions](https://github.com/alireza-anari/loomera/blob/main/apps/messaging/actions.py): `apps/messaging/actions.py`
- [Messaging identities](https://github.com/alireza-anari/loomera/blob/main/apps/messaging/models.py): `apps/messaging/models.py`
- [Bale bot](https://github.com/alireza-anari/loomera/blob/main/apps/bale_bot/handlers.py): `apps/bale_bot/handlers.py`
- [Telegram bot](https://github.com/alireza-anari/loomera/blob/main/apps/telegram_bot/client.py): `apps/telegram_bot/client.py`
- [Loomi orchestration](https://github.com/alireza-anari/loomera/blob/main/apps/lumi/orchestrator.py): `apps/lumi/orchestrator.py`

### Other components

- **Customer**
- **Customer web app**

## Connections

- Customer → Salon search: searches (evidence: `README.md`)
- Salon search → Salon profiles: queries (evidence: `apps/search/services.py`)
- Salon profiles → Service catalog: offers (evidence: `apps/salons/models.py`)
- Salon profiles → Reviews and ratings: relates to (evidence: `apps/salons/models.py`)
- Customer → Booking API: requests booking (evidence: `README.md`)
- Booking API → Availability API: checks slots
- Booking API → Appointments and orders: creates booking
- Appointments and orders → Salon profiles: references (evidence: `apps/orders/models.py`)
- Appointments and orders → Service catalog: references (evidence: `apps/orders/models.py`)
- Partner dashboards → Appointments and orders: manages appointments
- Stylist operations → Appointments and orders: uses appointment data (evidence: `apps/stylists/dashboard_services.py`)
- Appointments and orders → Payment and ledger: tracks payment
- Salon memberships → Accounts and roles: uses users (evidence: `apps/salons/membership.py`)
- Salon memberships → Salon profiles: links stylists (evidence: `apps/salons/membership.py`)
- Notifications → Appointments and orders: references events (evidence: `apps/notifications/services.py`)
- Analytics and reports → Appointments and orders: reports on (evidence: `apps/analytics/services.py`)
- Analytics and reports → Payment and ledger: reports on (evidence: `apps/analytics/services.py`)
- Editorial content → Reviews and ratings: uses review data (evidence: `apps/articles/services.py`)
- Customer web app → Customer: initiates journey (evidence: `README.md`)
- Bale bot → Messaging actions: dispatches actions (evidence: `apps/bale_bot/handlers.py`)
- Telegram bot → Messaging actions: uses actions (evidence: `apps/telegram_bot/client.py`)
- Messaging actions → Messaging identities: records actions (evidence: `apps/messaging/actions.py`)
- Notifications → Messaging actions: adds action channels (evidence: `apps/notifications/services.py`)
- Loomi orchestration → Customer: assists
