# azaank-dev/solar-installation-os-erp architecture

> Architecture diagram of the GitHub repository azaank-dev/solar-installation-os-erp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/azaank-dev/solar-installation-os-erp
- Repository: https://github.com/azaank-dev/solar-installation-os-erp

## Overview

Solar OS is a small solar-installation operations application exposed through Next.js API routes. Its apparent workflow is customer and lead intake, site surveys, equipment-backed quotation creation, then installation-job scheduling. The sampled routes show direct Prisma access and quotation calculations; the tree also documents item and status endpoints, but their implementation and connections were not sampled. The README is the unmodified Next.js starter README, so it documents no additional product capabilities or frontend workflow.

Main entry points: [`src/lib/prisma.ts`](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/lib/prisma.ts) (Prisma client), [`src/app/api/quotations/route.ts`](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/route.ts) (Quotations API), [`src/app/api/customers/route.ts`](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/customers/route.ts) (Customers API), [`src/app/api/customers/[id]/route.ts`](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/customers/%5Bid%5D/route.ts) (Customer record API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intake["Customer Intake"]
  node_customers["Customers API<br/>[route.ts]"]
  node_customer_item["Customer record API<br/>[route.ts]"]
  node_leads["Leads API<br/>[route.ts]"]
  node_lead_item["Lead record API<br/>[route.ts]"]
end

subgraph group_planning["Survey And Quoting"]
  node_surveys["Site surveys API<br/>[route.ts]"]
  node_survey_item["Survey record API<br/>[route.ts]"]
  node_quotations["Quotations API<br/>[route.ts]"]
  node_quotation_item["Quotation record API<br/>[route.ts]"]
  node_quotation_items["Quotation items API<br/>[route.ts]"]
  node_quotation_item_record["Quotation item API<br/>[route.ts]"]
  node_quotation_status["Quotation status API<br/>[route.ts]"]
  node_equipment["Equipment API<br/>[route.ts]"]
  node_equipment_item["Equipment record API<br/>[route.ts]"]
end

subgraph group_delivery["Installation Delivery"]
  node_jobs["Installation jobs API<br/>[route.ts]"]
  node_job_item["Job record API<br/>[route.ts]"]
  node_job_status["Job status API<br/>[route.ts]"]
end

subgraph group_persistence["Persistence"]
  node_prisma_client["Prisma client<br/>[prisma.ts]"]
  node_database[("PostgreSQL database<br/>[schema.prisma]")]
end

node_operator(("API caller"))

node_operator -->|"requests"| node_customers
node_operator -->|"requests"| node_customer_item
node_operator -->|"requests"| node_leads
node_operator -->|"requests"| node_lead_item
node_operator -->|"requests"| node_surveys
node_operator -->|"requests"| node_survey_item
node_operator -->|"requests"| node_quotations
node_operator -->|"requests"| node_quotation_item
node_operator -->|"requests"| node_quotation_items
node_operator -->|"requests"| node_quotation_item_record
node_operator -->|"requests"| node_quotation_status
node_operator -->|"requests"| node_equipment
node_operator -->|"requests"| node_equipment_item
node_operator -->|"requests"| node_jobs
node_operator -->|"requests"| node_job_item
node_operator -->|"requests"| node_job_status
node_customers -->|"queries"| node_prisma_client
node_customer_item -->|"queries"| node_prisma_client
node_leads -->|"queries"| node_prisma_client
node_lead_item -->|"queries"| node_prisma_client
node_surveys -->|"queries"| node_prisma_client
node_survey_item -->|"queries"| node_prisma_client
node_quotations -->|"queries"| node_prisma_client
node_quotation_item -->|"queries"| node_prisma_client
node_equipment -->|"queries"| node_prisma_client
node_equipment_item -->|"queries"| node_prisma_client
node_jobs -->|"queries"| node_prisma_client
node_prisma_client -->|"reads/writes"| node_database
node_quotations -->|"lead/equipment lookup"| node_prisma_client

click node_customers "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/customers/route.ts"
click node_customer_item "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/customers/%5Bid%5D/route.ts"
click node_leads "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/leads/route.ts"
click node_lead_item "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/leads/%5Bid%5D/route.ts"
click node_surveys "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/site-surveys/route.ts"
click node_survey_item "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/site-surveys/%5Bid%5D/route.ts"
click node_quotations "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/route.ts"
click node_quotation_item "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/%5Bid%5D/route.ts"
click node_quotation_items "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/%5Bid%5D/items/route.ts"
click node_quotation_item_record "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/%5Bid%5D/items/%5BitemId%5D/route.ts"
click node_quotation_status "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/%5Bid%5D/status/route.ts"
click node_equipment "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/equipment/route.ts"
click node_equipment_item "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/equipment/%5Bid%5D/route.ts"
click node_jobs "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/jobs/route.ts"
click node_job_item "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/jobs/%5Bid%5D/route.ts"
click node_job_status "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/jobs/%5Bid%5D/status/route.ts"
click node_prisma_client "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/lib/prisma.ts"
click node_database "https://github.com/azaank-dev/solar-installation-os-erp/blob/main/prisma/schema.prisma"

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_customers,node_customer_item,node_leads,node_lead_item toneBlue
class node_surveys,node_survey_item,node_quotations,node_quotation_item,node_quotation_items,node_quotation_item_record,node_quotation_status,node_equipment,node_equipment_item toneAmber
class node_jobs,node_job_item,node_job_status,node_operator toneMint
class node_prisma_client,node_database toneRose
```

## Components

### Customer Intake

- [Customers API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/customers/route.ts): `src/app/api/customers/route.ts`
- [Customer record API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/customers/%5Bid%5D/route.ts): `src/app/api/customers/[id]/route.ts`
- [Leads API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/leads/route.ts): `src/app/api/leads/route.ts`
- [Lead record API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/leads/%5Bid%5D/route.ts): `src/app/api/leads/[id]/route.ts`

### Survey And Quoting

- [Site surveys API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/site-surveys/route.ts): `src/app/api/site-surveys/route.ts`
- [Survey record API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/site-surveys/%5Bid%5D/route.ts): `src/app/api/site-surveys/[id]/route.ts`
- [Quotations API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/route.ts): `src/app/api/quotations/route.ts`
- [Quotation record API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/%5Bid%5D/route.ts): `src/app/api/quotations/[id]/route.ts`
- [Quotation items API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/%5Bid%5D/items/route.ts): `src/app/api/quotations/[id]/items/route.ts`
- [Quotation item API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/%5Bid%5D/items/%5BitemId%5D/route.ts): `src/app/api/quotations/[id]/items/[itemId]/route.ts`
- [Quotation status API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/quotations/%5Bid%5D/status/route.ts): `src/app/api/quotations/[id]/status/route.ts`
- [Equipment API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/equipment/route.ts): `src/app/api/equipment/route.ts`
- [Equipment record API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/equipment/%5Bid%5D/route.ts): `src/app/api/equipment/[id]/route.ts`

### Installation Delivery

- [Installation jobs API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/jobs/route.ts): `src/app/api/jobs/route.ts`
- [Job record API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/jobs/%5Bid%5D/route.ts): `src/app/api/jobs/[id]/route.ts`
- [Job status API](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/app/api/jobs/%5Bid%5D/status/route.ts): `src/app/api/jobs/[id]/status/route.ts`

### Persistence

- [Prisma client](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/src/lib/prisma.ts): `src/lib/prisma.ts`
- [PostgreSQL database](https://github.com/azaank-dev/solar-installation-os-erp/blob/main/prisma/schema.prisma): `prisma/schema.prisma`

### Other components

- **API caller**

## Connections

- API caller → Customers API: requests
- API caller → Customer record API: requests
- API caller → Leads API: requests
- API caller → Lead record API: requests
- API caller → Site surveys API: requests
- API caller → Survey record API: requests
- API caller → Quotations API: requests
- API caller → Quotation record API: requests
- API caller → Quotation items API: requests
- API caller → Quotation item API: requests
- API caller → Quotation status API: requests
- API caller → Equipment API: requests
- API caller → Equipment record API: requests
- API caller → Installation jobs API: requests
- API caller → Job record API: requests
- API caller → Job status API: requests
- Customers API → Prisma client: queries
- Customer record API → Prisma client: queries
- Leads API → Prisma client: queries
- Lead record API → Prisma client: queries
- Site surveys API → Prisma client: queries
- Survey record API → Prisma client: queries
- Quotations API → Prisma client: queries
- Quotation record API → Prisma client: queries
- Equipment API → Prisma client: queries
- Equipment record API → Prisma client: queries
- Installation jobs API → Prisma client: queries
- Prisma client → PostgreSQL database: reads/writes
- Quotations API → Prisma client: lead/equipment lookup
