# saispacerealty-art/saispace-2 architecture

> Architecture diagram of the GitHub repository saispacerealty-art/saispace-2, 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/saispacerealty-art/saispace-2
- Repository: https://github.com/saispacerealty-art/saispace-2

## Overview

Sai Space Realty is a real-estate discovery website with an admin CMS. Visitors browse listings, projects, and editorial pages, and can submit inquiries or referrals; admins sign in to manage that content and incoming submissions. API routes mediate reads and writes through the repository abstraction, while uploads have a separate storage path. The README documents JSON-file-backed data, but the data files are absent from the supplied tree; implementation details beyond sampled routes and repository interfaces are therefore limited.

Main entry points: [`src/app/admin/(protected)`](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/admin/(protected)) (Admin pages), [`src/lib/repository.ts`](https://github.com/saispacerealty-art/saispace-2/blob/main/src/lib/repository.ts) (Data repository), [`src/app/(site)`](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/(site)) (Discovery pages), [`src/components`](https://github.com/saispacerealty-art/saispace-2/tree/main/src/components) (Inquiry and referral forms)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public Site"]
  node_public_pages["Discovery pages"]
  node_public_forms["Inquiry and referral forms"]
end

subgraph group_admin["Admin CMS"]
  node_admin_pages["Admin pages"]
  node_admin_login["Admin login<br/>[page.tsx]"]
  node_route_guard["Admin route guard<br/>[proxy.ts]"]
end

subgraph group_api["API Layer"]
  node_property_api["Property API"]
  node_project_api["Project API"]
  node_post_api["Blog API"]
  node_inquiry_api["Inquiry API"]
  node_referral_api["Referral API"]
  node_content_api["Content and settings APIs"]
  node_auth_api["Session API"]
  node_upload_api["Image upload API<br/>[route.ts]"]
end

subgraph group_data["Data And Storage"]
  node_repository["Data repository<br/>[repository.ts]"]
  node_supabase[("Supabase storage<br/>[supabase.ts]")]
  node_local_uploads["Local upload files"]
end

node_visitor(("Site visitor"))
node_admin_user(("Administrator"))

node_visitor -->|"browses"| node_public_pages
node_visitor -->|"submits"| node_public_forms
node_public_forms -->|"sends inquiries"| node_inquiry_api
node_public_forms -->|"sends referrals"| node_referral_api
node_admin_user -->|"signs in"| node_admin_login
node_admin_login -->|"requests session"| node_auth_api
node_admin_user -->|"manages content"| node_admin_pages
node_route_guard -->|"guards routes"| node_admin_pages
node_admin_pages -->|"manages properties"| node_property_api
node_admin_pages -->|"manages projects"| node_project_api
node_admin_pages -->|"manages posts"| node_post_api
node_admin_pages -->|"reviews inquiries"| node_inquiry_api
node_admin_pages -->|"reviews referrals"| node_referral_api
node_admin_pages -->|"edits site content"| node_content_api
node_public_pages -->|"reads listings"| node_property_api
node_public_pages -->|"reads projects"| node_project_api
node_public_pages -->|"reads posts"| node_post_api
node_property_api -->|"reads and writes"| node_repository
node_project_api -->|"reads and writes"| node_repository
node_post_api -->|"reads and writes"| node_repository
node_inquiry_api -->|"reads and writes"| node_repository
node_referral_api -->|"reads and writes"| node_repository
node_content_api -->|"reads and writes"| node_repository
node_upload_api -.->|"uploads optionally"| node_supabase
node_upload_api -->|"writes fallback"| node_local_uploads

click node_public_pages "https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/(site)"
click node_public_forms "https://github.com/saispacerealty-art/saispace-2/tree/main/src/components"
click node_admin_pages "https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/admin/(protected)"
click node_admin_login "https://github.com/saispacerealty-art/saispace-2/blob/main/src/app/admin/login/page.tsx"
click node_route_guard "https://github.com/saispacerealty-art/saispace-2/blob/main/src/proxy.ts"
click node_property_api "https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/properties"
click node_project_api "https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/projects"
click node_post_api "https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/posts"
click node_inquiry_api "https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/inquiries"
click node_referral_api "https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/referrals"
click node_content_api "https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api"
click node_auth_api "https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/auth"
click node_upload_api "https://github.com/saispacerealty-art/saispace-2/blob/main/src/app/api/upload/route.ts"
click node_repository "https://github.com/saispacerealty-art/saispace-2/blob/main/src/lib/repository.ts"
click node_supabase "https://github.com/saispacerealty-art/saispace-2/blob/main/src/lib/supabase.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_public_pages,node_public_forms toneBlue
class node_admin_pages,node_admin_login,node_route_guard toneAmber
class node_property_api,node_project_api,node_post_api,node_inquiry_api,node_referral_api,node_content_api,node_auth_api,node_upload_api toneMint
class node_repository,node_supabase,node_local_uploads toneRose
class node_visitor,node_admin_user toneIndigo
```

## Components

### Public Site

- [Discovery pages](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/(site)): `src/app/(site)`
- [Inquiry and referral forms](https://github.com/saispacerealty-art/saispace-2/tree/main/src/components): `src/components`

### Admin CMS

- [Admin pages](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/admin/(protected)): `src/app/admin/(protected)`
- [Admin login](https://github.com/saispacerealty-art/saispace-2/blob/main/src/app/admin/login/page.tsx): `src/app/admin/login/page.tsx`
- [Admin route guard](https://github.com/saispacerealty-art/saispace-2/blob/main/src/proxy.ts): `src/proxy.ts`

### API Layer

- [Property API](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/properties): `src/app/api/properties`
- [Project API](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/projects): `src/app/api/projects`
- [Blog API](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/posts): `src/app/api/posts`
- [Inquiry API](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/inquiries): `src/app/api/inquiries`
- [Referral API](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/referrals): `src/app/api/referrals`
- [Content and settings APIs](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api): `src/app/api`
- [Session API](https://github.com/saispacerealty-art/saispace-2/tree/main/src/app/api/auth): `src/app/api/auth`
- [Image upload API](https://github.com/saispacerealty-art/saispace-2/blob/main/src/app/api/upload/route.ts): `src/app/api/upload/route.ts`

### Data And Storage

- [Data repository](https://github.com/saispacerealty-art/saispace-2/blob/main/src/lib/repository.ts): `src/lib/repository.ts`
- [Supabase storage](https://github.com/saispacerealty-art/saispace-2/blob/main/src/lib/supabase.ts): `src/lib/supabase.ts`
- **Local upload files**

### Other components

- **Site visitor**
- **Administrator**

## Connections

- Site visitor → Discovery pages: browses
- Site visitor → Inquiry and referral forms: submits
- Inquiry and referral forms → Inquiry API: sends inquiries
- Inquiry and referral forms → Referral API: sends referrals
- Administrator → Admin login: signs in
- Admin login → Session API: requests session
- Administrator → Admin pages: manages content
- Admin route guard → Admin pages: guards routes
- Admin pages → Property API: manages properties
- Admin pages → Project API: manages projects
- Admin pages → Blog API: manages posts
- Admin pages → Inquiry API: reviews inquiries
- Admin pages → Referral API: reviews referrals
- Admin pages → Content and settings APIs: edits site content
- Discovery pages → Property API: reads listings
- Discovery pages → Project API: reads projects
- Discovery pages → Blog API: reads posts
- Property API → Data repository: reads and writes
- Project API → Data repository: reads and writes
- Blog API → Data repository: reads and writes
- Inquiry API → Data repository: reads and writes
- Referral API → Data repository: reads and writes
- Content and settings APIs → Data repository: reads and writes
- Image upload API → Supabase storage: uploads optionally
- Image upload API → Local upload files: writes fallback
