# masoftconsulting/cprint_react architecture

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

- Interactive diagram: https://gitdiagram.com/masoftconsulting/cprint_react
- Repository: https://github.com/masoftconsulting/cprint_react

## Overview

Campus Print is a campus printing service with a public discovery and document-printing journey, plus an admin console for operating print locations and service content. The public print flow creates an upload session, accepts documents, lets customers select print options and pay, then provides a pickup code for printing at a campus kiosk. Admins manage locations, machines and assignments, pricing, FAQ, contact messages and print-service agents. The excerpts show the browser-to-print API and public location reads; other domain wiring follows README documentation and unsampled features are represented at their enclosing paths.

Main entry points: [`src/app/admin/(dashboard)`](https://github.com/masoftconsulting/cprint_react/tree/main/src/app/admin/(dashboard)) (Admin console), [`src/app/(public)`](https://github.com/masoftconsulting/cprint_react/tree/main/src/app/(public)) (Public pages), [`src/features/impression/components/print-flow.tsx`](https://github.com/masoftconsulting/cprint_react/blob/main/src/features/impression/components/print-flow.tsx) (Print flow), [`src/features/contact`](https://github.com/masoftconsulting/cprint_react/tree/main/src/features/contact) (Contact inbox)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public site"]
  node_public_pages["Public pages"]
  node_pricing_ui["Price calculator"]
end

subgraph group_printing["Print journey"]
  node_print_flow["Print flow<br/>[print-flow.tsx]"]
  node_upload_form["Upload form<br/>[upload-form.tsx]"]
  node_print_api_client["Print API client<br/>[api.ts]"]
end

subgraph group_operations["Print operations"]
  node_admin_pages["Admin console"]
  node_machines["Machine management"]
  node_assignments["Site assignments"]
  node_points["Print locations"]
  node_print_admin["Print administration"]
  node_central_client["Central API client<br/>[client.ts]"]
end

subgraph group_content["Site management"]
  node_faq["FAQ management"]
  node_contact["Contact inbox"]
  node_settings["Site settings"]
end

subgraph group_platform["Data and access"]
  node_location_queries["Location queries<br/>[queries.ts]"]
  node_auth["Admin authentication"]
  node_dal["Authorization layer<br/>[dal.ts]"]
end

node_visitor(("Customer"))
node_print_service{{"Print service"}}
node_supabase[("Supabase")]
node_smtp{{"SMTP mail"}}

node_visitor -->|"browses"| node_public_pages
node_public_pages -->|"reads locations"| node_location_queries
node_public_pages -->|"reads pricing"| node_settings
node_public_pages -->|"shows estimate"| node_pricing_ui
node_visitor -->|"starts printing"| node_print_flow
node_print_flow -->|"requests session, payment"| node_print_api_client
node_print_flow -->|"opens upload"| node_upload_form
node_upload_form -->|"uploads files"| node_print_api_client
node_print_api_client -->|"calls API"| node_print_service
node_visitor -->|"administers service"| node_admin_pages
node_admin_pages -->|"authenticates"| node_auth
node_admin_pages -->|"checks access"| node_dal
node_dal -->|"validates user"| node_supabase
node_auth -->|"manages session"| node_supabase
node_admin_pages -->|"manages machines"| node_machines
node_admin_pages -->|"assigns machines"| node_assignments
node_admin_pages -->|"manages locations"| node_points
node_admin_pages -->|"manages print service"| node_print_admin
node_print_admin -->|"invokes"| node_central_client
node_central_client -->|"admin API calls"| node_print_service
node_admin_pages -->|"edits FAQ"| node_faq
node_admin_pages -->|"handles messages"| node_contact
node_admin_pages -->|"edits settings"| node_settings
node_location_queries -->|"reads locations and counts"| node_supabase
node_points -->|"reads and writes locations"| node_supabase
node_machines -->|"reads and writes machines"| node_supabase
node_assignments -->|"reads and writes assignments"| node_supabase
node_faq -->|"reads and writes FAQ"| node_supabase
node_contact -->|"stores messages"| node_supabase
node_settings -->|"reads and writes settings"| node_supabase
node_contact -.->|"sends alert email"| node_smtp

click node_public_pages "https://github.com/masoftconsulting/cprint_react/tree/main/src/app/(public)"
click node_pricing_ui "https://github.com/masoftconsulting/cprint_react/blob/main/src/components/price-calculator.tsx"
click node_location_queries "https://github.com/masoftconsulting/cprint_react/blob/main/src/features/print-points/queries.ts"
click node_print_flow "https://github.com/masoftconsulting/cprint_react/blob/main/src/features/impression/components/print-flow.tsx"
click node_upload_form "https://github.com/masoftconsulting/cprint_react/blob/main/src/features/impression/components/upload-form.tsx"
click node_print_api_client "https://github.com/masoftconsulting/cprint_react/blob/main/src/features/impression/api.ts"
click node_admin_pages "https://github.com/masoftconsulting/cprint_react/tree/main/src/app/admin/(dashboard)"
click node_auth "https://github.com/masoftconsulting/cprint_react/tree/main/src/features/auth"
click node_dal "https://github.com/masoftconsulting/cprint_react/blob/main/src/lib/dal.ts"
click node_machines "https://github.com/masoftconsulting/cprint_react/tree/main/src/features/machines"
click node_assignments "https://github.com/masoftconsulting/cprint_react/tree/main/src/features/affectations"
click node_points "https://github.com/masoftconsulting/cprint_react/tree/main/src/features/print-points"
click node_print_admin "https://github.com/masoftconsulting/cprint_react/tree/main/src/features/impressions"
click node_central_client "https://github.com/masoftconsulting/cprint_react/blob/main/src/features/impressions/client.ts"
click node_faq "https://github.com/masoftconsulting/cprint_react/tree/main/src/features/faq"
click node_contact "https://github.com/masoftconsulting/cprint_react/tree/main/src/features/contact"
click node_settings "https://github.com/masoftconsulting/cprint_react/tree/main/src/features/settings"

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_pricing_ui toneBlue
class node_print_flow,node_upload_form,node_print_api_client,node_supabase toneAmber
class node_admin_pages,node_machines,node_assignments,node_points,node_print_admin,node_central_client toneMint
class node_faq,node_contact,node_settings toneRose
class node_location_queries,node_auth,node_dal,node_visitor,node_print_service,node_smtp toneIndigo
```

## Components

### Public site

- [Public pages](https://github.com/masoftconsulting/cprint_react/tree/main/src/app/(public)): `src/app/(public)`
- [Price calculator](https://github.com/masoftconsulting/cprint_react/blob/main/src/components/price-calculator.tsx): `src/components/price-calculator.tsx`

### Print journey

- [Print flow](https://github.com/masoftconsulting/cprint_react/blob/main/src/features/impression/components/print-flow.tsx): `src/features/impression/components/print-flow.tsx`
- [Upload form](https://github.com/masoftconsulting/cprint_react/blob/main/src/features/impression/components/upload-form.tsx): `src/features/impression/components/upload-form.tsx`
- [Print API client](https://github.com/masoftconsulting/cprint_react/blob/main/src/features/impression/api.ts): `src/features/impression/api.ts`

### Print operations

- [Admin console](https://github.com/masoftconsulting/cprint_react/tree/main/src/app/admin/(dashboard)): `src/app/admin/(dashboard)`
- [Machine management](https://github.com/masoftconsulting/cprint_react/tree/main/src/features/machines): `src/features/machines`
- [Site assignments](https://github.com/masoftconsulting/cprint_react/tree/main/src/features/affectations): `src/features/affectations`
- [Print locations](https://github.com/masoftconsulting/cprint_react/tree/main/src/features/print-points): `src/features/print-points`
- [Print administration](https://github.com/masoftconsulting/cprint_react/tree/main/src/features/impressions): `src/features/impressions`
- [Central API client](https://github.com/masoftconsulting/cprint_react/blob/main/src/features/impressions/client.ts): `src/features/impressions/client.ts`

### Site management

- [FAQ management](https://github.com/masoftconsulting/cprint_react/tree/main/src/features/faq): `src/features/faq`
- [Contact inbox](https://github.com/masoftconsulting/cprint_react/tree/main/src/features/contact): `src/features/contact`
- [Site settings](https://github.com/masoftconsulting/cprint_react/tree/main/src/features/settings): `src/features/settings`

### Data and access

- [Location queries](https://github.com/masoftconsulting/cprint_react/blob/main/src/features/print-points/queries.ts): `src/features/print-points/queries.ts`
- [Admin authentication](https://github.com/masoftconsulting/cprint_react/tree/main/src/features/auth): `src/features/auth`
- [Authorization layer](https://github.com/masoftconsulting/cprint_react/blob/main/src/lib/dal.ts): `src/lib/dal.ts`

### Other components

- **Customer**
- **Print service**
- **Supabase**
- **SMTP mail**

## Connections

- Customer → Public pages: browses
- Public pages → Location queries: reads locations
- Public pages → Site settings: reads pricing
- Public pages → Price calculator: shows estimate
- Customer → Print flow: starts printing
- Print flow → Print API client: requests session, payment
- Print flow → Upload form: opens upload
- Upload form → Print API client: uploads files
- Print API client → Print service: calls API
- Customer → Admin console: administers service
- Admin console → Admin authentication: authenticates
- Admin console → Authorization layer: checks access
- Authorization layer → Supabase: validates user
- Admin authentication → Supabase: manages session
- Admin console → Machine management: manages machines
- Admin console → Site assignments: assigns machines
- Admin console → Print locations: manages locations
- Admin console → Print administration: manages print service
- Print administration → Central API client: invokes
- Central API client → Print service: admin API calls
- Admin console → FAQ management: edits FAQ
- Admin console → Contact inbox: handles messages
- Admin console → Site settings: edits settings
- Location queries → Supabase: reads locations and counts
- Print locations → Supabase: reads and writes locations
- Machine management → Supabase: reads and writes machines
- Site assignments → Supabase: reads and writes assignments
- FAQ management → Supabase: reads and writes FAQ
- Contact inbox → Supabase: stores messages
- Site settings → Supabase: reads and writes settings
- Contact inbox → SMTP mail: sends alert email
