# sajid-itinnovator/precise_quote architecture

> Architecture diagram of the GitHub repository sajid-itinnovator/precise_quote, 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/sajid-itinnovator/precise_quote
- Repository: https://github.com/sajid-itinnovator/precise_quote

## Overview

PreciseQuote is a multi-tenant, white-label quotation and estimation SaaS for interior design studios. A user signs in to a tenant workspace, manages clients and product/material details, builds and saves a quotation or invoice, then reviews, prints, downloads, or shares it. The app also provides quotation history, company branding, workspace administration, and a platform super-admin console. The sampled code shows authentication, tenant-aware data access, save orchestration, and preview exports; other page-level connections are based on the route map and documented product capabilities.

Main entry points: [`src/App.jsx`](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/App.jsx) (App router), [`src/context/AppContext.jsx`](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/context/AppContext.jsx) (Workspace data), [`src/context/AuthContext.jsx`](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/context/AuthContext.jsx) (Authentication), [`src/components/QuotationPreview.jsx`](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/QuotationPreview.jsx) (Quotation preview)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Studio workspace"]
  node_app["App router<br/>[App.jsx]"]
  node_workspace_context["Workspace data<br/>[AppContext.jsx]"]
  node_dashboard["Dashboard<br/>[Hub.jsx]"]
  node_clients["Client directory<br/>[Clients.jsx]"]
  node_products["Products and materials<br/>[Products.jsx]"]
  node_company_profile["Company branding<br/>[CompanyProfile.jsx]"]
  node_admin["Workspace administration<br/>[Admin.jsx]"]
end

subgraph group_quotation["Quotation workflow"]
  node_builder["Quotation builder<br/>[Builder.jsx]"]
  node_client_picker["Client selection<br/>[ClientPicker.jsx]"]
  node_save_flow["Quotation save flow"]
  node_history["Quotation history<br/>[History.jsx]"]
  node_preview["Quotation preview"]
  node_document["Quotation document"]
  node_pdf["PDF generation<br/>[pdfGenerator.js]"]
  node_print["Print rendering<br/>[printRenderer.jsx]"]
  node_whatsapp["WhatsApp sharing"]
end

subgraph group_platform["Identity and platform"]
  node_domain["Domain routing<br/>[domainRouting.js]"]
  node_login["Login<br/>[Login.jsx]"]
  node_auth_context["Authentication<br/>[AuthContext.jsx]"]
  node_superadmin["Platform console<br/>[SuperAdmin.jsx]"]
  node_subscription["Subscription rules<br/>[subscription.js]"]
end

subgraph group_persistence["Cloud and delivery"]
  node_firebase_auth["Firebase Auth"]
  node_firestore[("Firestore")]
  node_pwa["PWA install<br/>[usePWAInstall.js]"]
  node_service_worker["Offline service worker<br/>[sw.js]"]
end

node_studio_user(("Studio user"))

node_studio_user -->|"opens"| node_app
node_app -->|"resolves host"| node_domain
node_app -->|"routes unauthenticated"| node_login
node_app -->|"routes workspace"| node_dashboard
node_app -->|"routes workspace"| node_clients
node_app -->|"routes workspace"| node_products
node_app -->|"routes workspace"| node_company_profile
node_app -->|"routes admins"| node_admin
node_app -->|"routes workspace"| node_builder
node_app -->|"routes workspace"| node_history
node_app -->|"routes platform host"| node_superadmin
node_app -->|"provides auth"| node_auth_context
node_app -->|"provides data"| node_workspace_context
node_login -->|"signs in"| node_auth_context
node_auth_context -->|"authenticates"| node_firebase_auth
node_auth_context -->|"reads profile"| node_firestore
node_workspace_context -->|"reads identity"| node_auth_context
node_workspace_context -->|"resolves tenant"| node_domain
node_workspace_context -->|"loads and saves"| node_firestore
node_builder -->|"selects client"| node_client_picker
node_builder -->|"saves quotation"| node_save_flow
node_save_flow -->|"updates records"| node_workspace_context
node_history -->|"reads quotations"| node_workspace_context
node_clients -->|"manages clients"| node_workspace_context
node_products -->|"manages catalog"| node_workspace_context
node_company_profile -->|"saves profile"| node_workspace_context
node_admin -->|"manages users"| node_workspace_context
node_preview -->|"renders quotation"| node_document
node_preview -->|"generates download"| node_pdf
node_preview -->|"builds print view"| node_print
node_preview -->|"opens sharing"| node_whatsapp
node_superadmin -->|"checks authorization"| node_auth_context
node_superadmin -->|"manages platform data"| node_workspace_context
node_workspace_context -->|"derives limits"| node_subscription
node_app -.->|"offers installation"| node_pwa
node_pwa -.->|"supports offline use"| node_service_worker

click node_app "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/App.jsx"
click node_domain "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/utils/domainRouting.js"
click node_login "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Login.jsx"
click node_auth_context "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/context/AuthContext.jsx"
click node_workspace_context "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/context/AppContext.jsx"
click node_dashboard "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Hub.jsx"
click node_clients "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Clients.jsx"
click node_products "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Products.jsx"
click node_company_profile "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/CompanyProfile.jsx"
click node_admin "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Admin.jsx"
click node_builder "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Builder.jsx"
click node_client_picker "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/ClientPicker.jsx"
click node_save_flow "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/builder/useQuotationSave.js"
click node_history "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/History.jsx"
click node_preview "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/QuotationPreview.jsx"
click node_document "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/QuotationDocument.jsx"
click node_pdf "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/utils/pdfGenerator.js"
click node_print "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/utils/printRenderer.jsx"
click node_whatsapp "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/WhatsAppShareModal.jsx"
click node_superadmin "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/SuperAdmin.jsx"
click node_subscription "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/utils/subscription.js"
click node_pwa "https://github.com/sajid-itinnovator/precise_quote/blob/main/src/hooks/usePWAInstall.js"
click node_service_worker "https://github.com/sajid-itinnovator/precise_quote/blob/main/public/sw.js"

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_workspace_context,node_dashboard,node_clients,node_products,node_company_profile,node_admin,node_studio_user toneBlue
class node_builder,node_client_picker,node_save_flow,node_history,node_preview,node_document,node_pdf,node_print,node_whatsapp toneAmber
class node_domain,node_login,node_auth_context,node_superadmin,node_subscription toneMint
class node_firebase_auth,node_firestore,node_pwa,node_service_worker toneRose
```

## Components

### Studio workspace

- [App router](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/App.jsx): `src/App.jsx`
- [Workspace data](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/context/AppContext.jsx): `src/context/AppContext.jsx`
- [Dashboard](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Hub.jsx): `src/pages/Hub.jsx`
- [Client directory](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Clients.jsx): `src/pages/Clients.jsx`
- [Products and materials](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Products.jsx): `src/pages/Products.jsx`
- [Company branding](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/CompanyProfile.jsx): `src/pages/CompanyProfile.jsx`
- [Workspace administration](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Admin.jsx): `src/pages/Admin.jsx`

### Quotation workflow

- [Quotation builder](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Builder.jsx): `src/pages/Builder.jsx`
- [Client selection](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/ClientPicker.jsx): `src/components/ClientPicker.jsx`
- [Quotation save flow](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/builder/useQuotationSave.js): `src/components/builder/useQuotationSave.js`
- [Quotation history](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/History.jsx): `src/pages/History.jsx`
- [Quotation preview](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/QuotationPreview.jsx): `src/components/QuotationPreview.jsx`
- [Quotation document](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/QuotationDocument.jsx): `src/components/QuotationDocument.jsx`
- [PDF generation](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/utils/pdfGenerator.js): `src/utils/pdfGenerator.js`
- [Print rendering](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/utils/printRenderer.jsx): `src/utils/printRenderer.jsx`
- [WhatsApp sharing](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/components/WhatsAppShareModal.jsx): `src/components/WhatsAppShareModal.jsx`

### Identity and platform

- [Domain routing](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/utils/domainRouting.js): `src/utils/domainRouting.js`
- [Login](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/Login.jsx): `src/pages/Login.jsx`
- [Authentication](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/context/AuthContext.jsx): `src/context/AuthContext.jsx`
- [Platform console](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/pages/SuperAdmin.jsx): `src/pages/SuperAdmin.jsx`
- [Subscription rules](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/utils/subscription.js): `src/utils/subscription.js`

### Cloud and delivery

- **Firebase Auth**
- **Firestore**
- [PWA install](https://github.com/sajid-itinnovator/precise_quote/blob/main/src/hooks/usePWAInstall.js): `src/hooks/usePWAInstall.js`
- [Offline service worker](https://github.com/sajid-itinnovator/precise_quote/blob/main/public/sw.js): `public/sw.js`

### Other components

- **Studio user**

## Connections

- Studio user → App router: opens
- App router → Domain routing: resolves host
- App router → Login: routes unauthenticated
- App router → Dashboard: routes workspace
- App router → Client directory: routes workspace
- App router → Products and materials: routes workspace
- App router → Company branding: routes workspace
- App router → Workspace administration: routes admins
- App router → Quotation builder: routes workspace
- App router → Quotation history: routes workspace
- App router → Platform console: routes platform host
- App router → Authentication: provides auth
- App router → Workspace data: provides data
- Login → Authentication: signs in
- Authentication → Firebase Auth: authenticates
- Authentication → Firestore: reads profile
- Workspace data → Authentication: reads identity
- Workspace data → Domain routing: resolves tenant
- Workspace data → Firestore: loads and saves
- Quotation builder → Client selection: selects client
- Quotation builder → Quotation save flow: saves quotation
- Quotation save flow → Workspace data: updates records
- Quotation history → Workspace data: reads quotations
- Client directory → Workspace data: manages clients
- Products and materials → Workspace data: manages catalog
- Company branding → Workspace data: saves profile
- Workspace administration → Workspace data: manages users
- Quotation preview → Quotation document: renders quotation
- Quotation preview → PDF generation: generates download
- Quotation preview → Print rendering: builds print view
- Quotation preview → WhatsApp sharing: opens sharing
- Platform console → Authentication: checks authorization
- Platform console → Workspace data: manages platform data
- Workspace data → Subscription rules: derives limits
- App router → PWA install: offers installation
- PWA install → Offline service worker: supports offline use
