# nazirumar/photography-studio-management-system architecture

> Architecture diagram of the GitHub repository nazirumar/photography-studio-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nazirumar/photography-studio-management-system
- Repository: https://github.com/nazirumar/photography-studio-management-system

## Overview

StudioFlow is a Django photography-studio management platform. Its principal customer journey runs from lead and client management through booking, project work, client galleries, invoicing, payment, and delivery. Separate branches cover studio resources, communications, reporting, administration, and AI-assisted operations; the mobile client consumes the REST API. The graph combines sampled implementation evidence with explicitly documented README capabilities. Several feature areas were not sampled, so their internal calls and data stores are not asserted.

Main entry points: [`apps/bookings/models.py`](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/bookings/models.py) (Bookings), [`apps/reports`](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/reports) (Reports and forecasts), [`apps/clients/models.py`](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/clients/models.py) (Client records), [`apps/ai_fde/agents/graph.py`](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/ai_fde/agents/graph.py) (AI workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer workflow"]
  node_leads["Lead pipeline"]
  node_clients[("Client records<br/>[models.py]")]
  node_bookings[("Bookings<br/>[models.py]")]
  node_projects[("Projects<br/>[models.py]")]
  node_galleries[("Client galleries<br/>[models.py]")]
  node_finance[("Invoices and payments<br/>[models.py]")]
  node_notifications["Communications"]
  node_portal["Client portal"]
end

subgraph group_operations["Studio operations"]
  node_staff[("Staff and studios<br/>[models.py]")]
  node_packages[("Packages<br/>[models.py]")]
  node_inventory[("Inventory and suppliers<br/>[models.py]")]
  node_equipment[("Equipment maintenance<br/>[models.py]")]
  node_expenses[("Expenses<br/>[models.py]")]
  node_contracts["Contracts"]
  node_printing["Print orders"]
  node_feedback["Client feedback"]
  node_reports["Reports and forecasts"]
end

subgraph group_platform["Platform services"]
  node_api["REST API"]
  node_mobile["Mobile app<br/>[App.js]"]
  node_audit[("Audit trail<br/>[models.py]")]
  node_accounts[("Accounts<br/>[models.py]")]
  node_core["Administration and search"]
  node_background["Scheduled jobs<br/>[celery.py]"]
end

subgraph group_assistant["AI assistant"]
  node_ai_workflow["AI workflow<br/>[graph.py]"]
  node_ai_tools["Studio operation tools"]
  node_rag["Knowledge retrieval<br/>[ingestion.py]"]
  node_knowledge[("Knowledge documents<br/>[knowledge.py]")]
  node_embeddings["Embeddings<br/>[embeddings.py]"]
  node_llm["LLM provider"]
end

node_users(("Staff and clients"))
node_openai["LLM service"]
node_payment_service["Paystack"]

node_users -->|"manage leads"| node_leads
node_leads -->|"convert to client"| node_clients
node_users -->|"manage clients"| node_clients
node_clients -->|"book sessions"| node_bookings
node_packages -->|"select package"| node_bookings
node_bookings -->|"track shoot"| node_projects
node_projects -->|"deliver gallery"| node_galleries
node_galleries -->|"notify selection"| node_notifications
node_bookings -->|"invoice booking"| node_finance
node_finance -.->|"create payment links"| node_payment_service
node_finance -->|"send reminders"| node_notifications
node_projects -->|"notify delivery"| node_notifications
node_portal -->|"enable selections"| node_galleries
node_users -->|"coordinate staff"| node_staff
node_users -->|"manage stock"| node_inventory
node_users -->|"schedule maintenance"| node_equipment
node_users -->|"track costs"| node_expenses
node_users -->|"manage contracts"| node_contracts
node_users -->|"manage print jobs"| node_printing
node_users -->|"review feedback"| node_feedback
node_users -->|"view analytics"| node_reports
node_reports -->|"analyze bookings"| node_bookings
node_reports -->|"analyze clients"| node_clients
node_reports -->|"analyze expenses"| node_expenses
node_reports -->|"analyze revenue"| node_finance
node_mobile -->|"request data"| node_api
node_accounts -->|"record account events"| node_audit
node_bookings -->|"record booking changes"| node_audit
node_clients -->|"record client changes"| node_audit
node_background -->|"schedule messages"| node_notifications
node_background -->|"check stock alerts"| node_inventory
node_background -->|"check maintenance"| node_equipment
node_users -->|"ask assistant"| node_ai_workflow
node_ai_workflow -->|"dispatch tools"| node_ai_tools
node_ai_workflow -->|"retrieve context"| node_rag
node_rag -->|"read and chunk"| node_knowledge
node_rag -->|"generate vectors"| node_embeddings
node_ai_workflow -->|"request completion"| node_llm
node_llm -->|"call provider"| node_openai
node_users -->|"administer platform"| node_core

click node_leads "https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/leads"
click node_clients "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/clients/models.py"
click node_bookings "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/bookings/models.py"
click node_projects "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/projects/models.py"
click node_galleries "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/gallery/models.py"
click node_finance "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/finance/models.py"
click node_notifications "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/notifications/whatsapp_service.py"
click node_portal "https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/portal"
click node_staff "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/studios/models.py"
click node_packages "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/packages/models.py"
click node_inventory "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/inventory/models.py"
click node_equipment "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/equipment/models.py"
click node_expenses "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/expenses/models.py"
click node_contracts "https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/contracts"
click node_printing "https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/printing"
click node_feedback "https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/feedback"
click node_reports "https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/reports"
click node_api "https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/api"
click node_mobile "https://github.com/nazirumar/photography-studio-management-system/blob/master/mobile/App.js"
click node_audit "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/audit/models.py"
click node_accounts "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/accounts/models.py"
click node_core "https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/core"
click node_background "https://github.com/nazirumar/photography-studio-management-system/blob/master/config/celery.py"
click node_ai_workflow "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/ai_fde/agents/graph.py"
click node_ai_tools "https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/ai_fde/tools"
click node_rag "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/ai_fde/rag/ingestion.py"
click node_knowledge "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/ai_fde/models/knowledge.py"
click node_embeddings "https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/ai_fde/rag/embeddings.py"
click node_llm "https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/ai_fde/llm"

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_leads,node_clients,node_bookings,node_projects,node_galleries,node_finance,node_notifications,node_portal,node_users toneBlue
class node_staff,node_packages,node_inventory,node_equipment,node_expenses,node_contracts,node_printing,node_feedback,node_reports toneAmber
class node_api,node_mobile,node_audit,node_accounts,node_core,node_background toneMint
class node_ai_workflow,node_ai_tools,node_rag,node_knowledge,node_embeddings,node_llm toneRose
class node_openai,node_payment_service toneIndigo
```

## Components

### Customer workflow

- [Lead pipeline](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/leads): `apps/leads`
- [Client records](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/clients/models.py): `apps/clients/models.py`
- [Bookings](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/bookings/models.py): `apps/bookings/models.py`
- [Projects](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/projects/models.py): `apps/projects/models.py`
- [Client galleries](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/gallery/models.py): `apps/gallery/models.py`
- [Invoices and payments](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/finance/models.py): `apps/finance/models.py`
- [Communications](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/notifications/whatsapp_service.py): `apps/notifications/whatsapp_service.py`
- [Client portal](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/portal): `apps/portal`

### Studio operations

- [Staff and studios](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/studios/models.py): `apps/studios/models.py`
- [Packages](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/packages/models.py): `apps/packages/models.py`
- [Inventory and suppliers](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/inventory/models.py): `apps/inventory/models.py`
- [Equipment maintenance](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/equipment/models.py): `apps/equipment/models.py`
- [Expenses](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/expenses/models.py): `apps/expenses/models.py`
- [Contracts](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/contracts): `apps/contracts`
- [Print orders](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/printing): `apps/printing`
- [Client feedback](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/feedback): `apps/feedback`
- [Reports and forecasts](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/reports): `apps/reports`

### Platform services

- [REST API](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/api): `apps/api`
- [Mobile app](https://github.com/nazirumar/photography-studio-management-system/blob/master/mobile/App.js): `mobile/App.js`
- [Audit trail](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/audit/models.py): `apps/audit/models.py`
- [Accounts](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/accounts/models.py): `apps/accounts/models.py`
- [Administration and search](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/core): `apps/core`
- [Scheduled jobs](https://github.com/nazirumar/photography-studio-management-system/blob/master/config/celery.py): `config/celery.py`

### AI assistant

- [AI workflow](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/ai_fde/agents/graph.py): `apps/ai_fde/agents/graph.py`
- [Studio operation tools](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/ai_fde/tools): `apps/ai_fde/tools`
- [Knowledge retrieval](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/ai_fde/rag/ingestion.py): `apps/ai_fde/rag/ingestion.py`
- [Knowledge documents](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/ai_fde/models/knowledge.py): `apps/ai_fde/models/knowledge.py`
- [Embeddings](https://github.com/nazirumar/photography-studio-management-system/blob/master/apps/ai_fde/rag/embeddings.py): `apps/ai_fde/rag/embeddings.py`
- [LLM provider](https://github.com/nazirumar/photography-studio-management-system/tree/master/apps/ai_fde/llm): `apps/ai_fde/llm`

### Other components

- **Staff and clients**
- **LLM service**
- **Paystack**

## Connections

- Staff and clients → Lead pipeline: manage leads
- Lead pipeline → Client records: convert to client
- Staff and clients → Client records: manage clients
- Client records → Bookings: book sessions
- Packages → Bookings: select package
- Bookings → Projects: track shoot
- Projects → Client galleries: deliver gallery
- Client galleries → Communications: notify selection
- Bookings → Invoices and payments: invoice booking
- Invoices and payments → Paystack: create payment links
- Invoices and payments → Communications: send reminders
- Projects → Communications: notify delivery
- Client portal → Client galleries: enable selections
- Staff and clients → Staff and studios: coordinate staff
- Staff and clients → Inventory and suppliers: manage stock
- Staff and clients → Equipment maintenance: schedule maintenance
- Staff and clients → Expenses: track costs
- Staff and clients → Contracts: manage contracts
- Staff and clients → Print orders: manage print jobs
- Staff and clients → Client feedback: review feedback
- Staff and clients → Reports and forecasts: view analytics
- Reports and forecasts → Bookings: analyze bookings (evidence: `apps/reports/services.py`)
- Reports and forecasts → Client records: analyze clients (evidence: `apps/reports/services.py`)
- Reports and forecasts → Expenses: analyze expenses (evidence: `apps/reports/services.py`)
- Reports and forecasts → Invoices and payments: analyze revenue (evidence: `apps/reports/services.py`)
- Mobile app → REST API: request data (evidence: `mobile/App.js`)
- Accounts → Audit trail: record account events (evidence: `apps/accounts/services.py`)
- Bookings → Audit trail: record booking changes (evidence: `apps/bookings/services.py`)
- Client records → Audit trail: record client changes (evidence: `apps/clients/services.py`)
- Scheduled jobs → Communications: schedule messages
- Scheduled jobs → Inventory and suppliers: check stock alerts
- Scheduled jobs → Equipment maintenance: check maintenance
- Staff and clients → AI workflow: ask assistant
- AI workflow → Studio operation tools: dispatch tools
- AI workflow → Knowledge retrieval: retrieve context
- Knowledge retrieval → Knowledge documents: read and chunk (evidence: `apps/ai_fde/rag/ingestion.py`)
- Knowledge retrieval → Embeddings: generate vectors (evidence: `apps/ai_fde/rag/ingestion.py`)
- AI workflow → LLM provider: request completion
- LLM provider → LLM service: call provider
- Staff and clients → Administration and search: administer platform
