# raizel820/blasti-multi-platform architecture

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

- Interactive diagram: https://gitdiagram.com/raizel820/blasti-multi-platform
- Repository: https://github.com/raizel820/blasti-multi-platform

## Overview

BLASTI is a multiplatform queue-management product for customers, agencies, and platform administrators. The customer journey is to find an agency, join its queue or reserve a service, then follow progress and receive turn alerts; agencies manage queues, staff, devices, and subscriptions, while administrators configure and monitor the platform. The tree also shows analytics, payments, QR/kiosk access, and offline desktop operation. README content was unavailable, and source excerpts cover only selected internals, so the graph emphasizes documented and tree-supported capabilities while leaving uncertain wiring out.

Main entry points: [`apps/web/src/components/customer/customer-home.tsx`](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/customer/customer-home.tsx) (Customer app), [`apps/web/src/components/agency/agency-dashboard.tsx`](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/agency/agency-dashboard.tsx) (Agency workspace), [`apps/web/src/lib/api-client.ts`](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/lib/api-client.ts) (Cross-platform API client), [`apps/web/src/components/admin/admin-dashboard.tsx`](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/admin/admin-dashboard.tsx) (Admin console)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer journey"]
  node_customer_ui["Customer app<br/>[customer-home.tsx]"]
  node_agency_search["Agency discovery<br/>[NearbyAgencies.tsx]"]
  node_queue_join["Join queue"]
  node_reservations["Reservations<br/>[reservations.ts]"]
  node_queue_status["Queue progress<br/>[customer-queue.tsx]"]
  node_turn_alerts["Turn alerts"]
end

subgraph group_agency["Agency operations"]
  node_agency_ui["Agency workspace"]
  node_queue_ops["Queue operations<br/>[queue.ts]"]
  node_agency_admin["Staff and devices"]
  node_agency_analytics["Agency analytics<br/>[staff-analytics.ts]"]
end

subgraph group_platform["Platform services"]
  node_admin_ui["Admin console"]
  node_admin_analytics["Platform analytics"]
  node_payments["Payments and reconciliation"]
  node_api_client["Cross-platform API client<br/>[api-client.ts]"]
  node_api["Cloud API<br/>[index.ts]"]
  node_database[("Application data<br/>[index.ts]")]
  node_notification_worker["Notification worker"]
  node_sms_service["SMS delivery<br/>[sms-service.ts]"]
  node_push_service["Push routing"]
end

subgraph group_offline["Offline clients"]
  node_desktop_shell["Desktop shell<br/>[main.js]"]
  node_local_sync["Desktop sync service<br/>[sync-service.js]"]
  node_local_db[("Local SQLite data<br/>[db.js]")]
  node_mobile_client["Mobile client<br/>[setup.ts]"]
end

node_customer_actor(("Customer"))
node_agency_actor(("Agency staff"))
node_admin_actor(("Platform admin"))
node_payment_provider["Payment provider"]
node_sms_gateway["SMS gateway"]

node_customer_actor -->|"uses"| node_customer_ui
node_customer_ui -->|"finds agencies"| node_agency_search
node_customer_ui -->|"selects service"| node_queue_join
node_queue_join -->|"submits reservation"| node_reservations
node_customer_ui -->|"follows queue"| node_queue_status
node_agency_actor -->|"uses"| node_agency_ui
node_agency_ui -->|"manages queue"| node_queue_ops
node_agency_ui -->|"manages staff and devices"| node_agency_admin
node_agency_ui -->|"views metrics"| node_agency_analytics
node_admin_actor -->|"uses"| node_admin_ui
node_admin_ui -->|"views metrics"| node_admin_analytics
node_admin_ui -->|"configures payments"| node_payments
node_payments -.->|"processes payment"| node_payment_provider
node_customer_ui -->|"requests data"| node_api_client
node_agency_ui -->|"requests data"| node_api_client
node_admin_ui -->|"requests data"| node_api_client
node_mobile_client -->|"requests data"| node_api_client
node_api_client -->|"sends HTTP requests"| node_api
node_api -->|"reads and writes"| node_database
node_notification_worker -->|"loads jobs and updates status"| node_database
node_notification_worker -->|"sends SMS"| node_sms_service
node_notification_worker -->|"sends push"| node_push_service
node_sms_service -.->|"delivers message"| node_sms_gateway
node_queue_status -->|"shows turn alerts"| node_turn_alerts
node_desktop_shell -->|"starts and controls"| node_local_sync
node_local_sync -->|"reads and writes"| node_local_db
node_local_sync -->|"syncs with cloud"| node_api

click node_customer_ui "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/customer/customer-home.tsx"
click node_agency_search "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/customer/home/NearbyAgencies.tsx"
click node_queue_join "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/customer/home/JoinQueueDialog.tsx"
click node_reservations "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/routes/reservations.ts"
click node_queue_status "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/customer/customer-queue.tsx"
click node_agency_ui "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/agency/agency-dashboard.tsx"
click node_queue_ops "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/routes/queue.ts"
click node_agency_admin "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/agency/agency-employees.tsx"
click node_agency_analytics "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/routes/staff-analytics.ts"
click node_admin_ui "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/admin/admin-dashboard.tsx"
click node_admin_analytics "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/routes/customer-analytics.ts"
click node_payments "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/routes/payment-checkout.ts"
click node_api_client "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/lib/api-client.ts"
click node_api "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/index.ts"
click node_database "https://github.com/raizel820/blasti-multi-platform/blob/master/packages/db/index.ts"
click node_notification_worker "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/workers/notification-worker.ts"
click node_sms_service "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/lib/sms-service.ts"
click node_push_service "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/lib/notification-router.ts"
click node_desktop_shell "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/desktop/main.js"
click node_local_sync "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/desktop/local-api/sync-service.js"
click node_local_db "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/desktop/local-api/lib/db.js"
click node_mobile_client "https://github.com/raizel820/blasti-multi-platform/blob/master/apps/mobile/src/setup.ts"

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_customer_ui,node_agency_search,node_queue_join,node_reservations,node_queue_status,node_turn_alerts toneBlue
class node_agency_ui,node_queue_ops,node_agency_admin,node_agency_analytics toneAmber
class node_admin_ui,node_admin_analytics,node_payments,node_api_client,node_api,node_database,node_notification_worker,node_sms_service,node_push_service toneMint
class node_desktop_shell,node_local_sync,node_local_db,node_mobile_client toneRose
class node_customer_actor,node_agency_actor,node_admin_actor,node_payment_provider,node_sms_gateway toneIndigo
```

## Components

### Customer journey

- [Customer app](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/customer/customer-home.tsx): `apps/web/src/components/customer/customer-home.tsx`
- [Agency discovery](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/customer/home/NearbyAgencies.tsx): `apps/web/src/components/customer/home/NearbyAgencies.tsx`
- [Join queue](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/customer/home/JoinQueueDialog.tsx): `apps/web/src/components/customer/home/JoinQueueDialog.tsx`
- [Reservations](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/routes/reservations.ts): `apps/api/src/routes/reservations.ts`
- [Queue progress](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/customer/customer-queue.tsx): `apps/web/src/components/customer/customer-queue.tsx`
- **Turn alerts**

### Agency operations

- [Agency workspace](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/agency/agency-dashboard.tsx): `apps/web/src/components/agency/agency-dashboard.tsx`
- [Queue operations](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/routes/queue.ts): `apps/api/src/routes/queue.ts`
- [Staff and devices](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/agency/agency-employees.tsx): `apps/web/src/components/agency/agency-employees.tsx`
- [Agency analytics](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/routes/staff-analytics.ts): `apps/api/src/routes/staff-analytics.ts`

### Platform services

- [Admin console](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/components/admin/admin-dashboard.tsx): `apps/web/src/components/admin/admin-dashboard.tsx`
- [Platform analytics](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/routes/customer-analytics.ts): `apps/api/src/routes/customer-analytics.ts`
- [Payments and reconciliation](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/routes/payment-checkout.ts): `apps/api/src/routes/payment-checkout.ts`
- [Cross-platform API client](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/web/src/lib/api-client.ts): `apps/web/src/lib/api-client.ts`
- [Cloud API](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/index.ts): `apps/api/src/index.ts`
- [Application data](https://github.com/raizel820/blasti-multi-platform/blob/master/packages/db/index.ts): `packages/db/index.ts`
- [Notification worker](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/workers/notification-worker.ts): `apps/api/src/workers/notification-worker.ts`
- [SMS delivery](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/lib/sms-service.ts): `apps/api/src/lib/sms-service.ts`
- [Push routing](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/api/src/lib/notification-router.ts): `apps/api/src/lib/notification-router.ts`

### Offline clients

- [Desktop shell](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/desktop/main.js): `apps/desktop/main.js`
- [Desktop sync service](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/desktop/local-api/sync-service.js): `apps/desktop/local-api/sync-service.js`
- [Local SQLite data](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/desktop/local-api/lib/db.js): `apps/desktop/local-api/lib/db.js`
- [Mobile client](https://github.com/raizel820/blasti-multi-platform/blob/master/apps/mobile/src/setup.ts): `apps/mobile/src/setup.ts`

### Other components

- **Customer**
- **Agency staff**
- **Platform admin**
- **Payment provider**
- **SMS gateway**

## Connections

- Customer → Customer app: uses
- Customer app → Agency discovery: finds agencies
- Customer app → Join queue: selects service
- Join queue → Reservations: submits reservation
- Customer app → Queue progress: follows queue
- Agency staff → Agency workspace: uses
- Agency workspace → Queue operations: manages queue
- Agency workspace → Staff and devices: manages staff and devices
- Agency workspace → Agency analytics: views metrics
- Platform admin → Admin console: uses
- Admin console → Platform analytics: views metrics
- Admin console → Payments and reconciliation: configures payments
- Payments and reconciliation → Payment provider: processes payment
- Customer app → Cross-platform API client: requests data
- Agency workspace → Cross-platform API client: requests data
- Admin console → Cross-platform API client: requests data
- Mobile client → Cross-platform API client: requests data
- Cross-platform API client → Cloud API: sends HTTP requests
- Cloud API → Application data: reads and writes
- Notification worker → Application data: loads jobs and updates status
- Notification worker → SMS delivery: sends SMS
- Notification worker → Push routing: sends push
- SMS delivery → SMS gateway: delivers message
- Queue progress → Turn alerts: shows turn alerts
- Desktop shell → Desktop sync service: starts and controls
- Desktop sync service → Local SQLite data: reads and writes
- Desktop sync service → Cloud API: syncs with cloud
