# salaudeenabdulkabir/cyndy-edu architecture

> Architecture diagram of the GitHub repository salaudeenabdulkabir/cyndy-edu, 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/salaudeenabdulkabir/cyndy-edu
- Repository: https://github.com/salaudeenabdulkabir/cyndy-edu

## Overview

Cyndy Educational Pathways is a multi-role application portal for applicants, application workers, and administrators. The main applicant journey is to browse available programs, create and complete an application, upload required documents and payment evidence, then track its status; staff review applications and administrators manage catalog, assignments, and payment confirmation. Database records and private R2 documents support these stages, with Clerk providing identity. The graph reflects README capabilities and sampled route ownership; some page-to-API wiring and unsampled subsystems are represented only where documentation supports them.

Main entry points: [`lib/db/schema.ts`](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/lib/db/schema.ts) (Portal database), [`app/apply/page-content.tsx`](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/apply/page-content.tsx) (Application wizard), [`app/admin/(protected)/page.tsx`](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/admin/(protected)/page.tsx) (Admin dashboard), [`app/api/applications/route.ts`](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/applications/route.ts) (Application records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_applicant["Applicant portal"]
  node_apply_ui["Application wizard<br/>[page-content.tsx]"]
  node_wizard["Application sections"]
  node_catalog_api["Program catalog<br/>[route.ts]"]
  node_applications_api["Application records<br/>[route.ts]"]
  node_application_detail["Application detail<br/>[route.ts]"]
  node_documents["Document handling<br/>[route.ts]"]
  node_receipt["Payment receipt<br/>[route.ts]"]
  node_status_ui["Application status<br/>[page.tsx]"]
end

subgraph group_staff["Staff operations"]
  node_worker_ui["Worker dashboard<br/>[page.tsx]"]
end

subgraph group_admin["Administration"]
  node_admin_ui["Admin dashboard<br/>[page.tsx]"]
  node_admin_apps["Application oversight<br/>[route.ts]"]
  node_admin_catalog["Catalog management"]
  node_catalog_admin_api["Catalog administration<br/>[route.ts]"]
  node_admin_payments["Payment review<br/>[route.ts]"]
  node_admin_workers["Worker management<br/>[route.ts]"]
end

subgraph group_core["Platform services"]
  node_notifications["Notifications<br/>[route.ts]"]
  node_database[("Portal database<br/>[schema.ts]")]
  node_policy["Application policy"]
  node_storage["Private document storage<br/>[r2.ts]"]
end

subgraph group_external["External services"]
  node_clerk{{"Clerk identity"}}
  node_r2[("Cloudflare R2")]
end

node_applicant(("Applicant"))

node_applicant -->|"completes form"| node_apply_ui
node_apply_ui -->|"loads choices"| node_catalog_api
node_apply_ui -->|"creates application"| node_applications_api
node_apply_ui -->|"updates application"| node_application_detail
node_apply_ui -->|"uploads documents"| node_documents
node_apply_ui -->|"submits receipt"| node_receipt
node_wizard -->|"renders sections"| node_apply_ui
node_catalog_api -->|"reads catalog"| node_database
node_applications_api -->|"reads and writes"| node_database
node_applications_api -->|"shapes client data"| node_policy
node_application_detail -->|"reads and updates"| node_database
node_application_detail -->|"checks submission"| node_policy
node_documents -->|"reads and writes"| node_database
node_documents -->|"stores and signs files"| node_storage
node_storage -->|"reads and writes"| node_r2
node_receipt -->|"records receipt"| node_database
node_receipt -->|"stores receipt"| node_storage
node_worker_ui -->|"supports review"| node_applicant
node_worker_ui -->|"authenticates"| node_clerk
node_admin_ui -->|"manages applications"| node_admin_apps
node_admin_ui -->|"manages catalog"| node_admin_catalog
node_admin_ui -->|"reviews payments"| node_admin_payments
node_admin_ui -->|"manages workers"| node_admin_workers
node_admin_catalog -->|"saves catalog"| node_catalog_admin_api
node_catalog_admin_api -->|"reads and writes"| node_database
node_catalog_admin_api -->|"imports programs"| node_database
node_admin_apps -->|"reads and updates"| node_database
node_admin_payments -->|"confirms payment"| node_database
node_admin_payments -->|"signs receipt links"| node_storage
node_admin_workers -->|"reads and writes"| node_database
node_admin_workers -->|"creates identity"| node_clerk
node_notifications -->|"reads and updates"| node_database
node_status_ui -->|"loads alerts"| node_notifications
node_applications_api -->|"authenticates"| node_clerk
node_catalog_api -->|"authenticates"| node_clerk
node_receipt -->|"authenticates"| node_clerk

click node_apply_ui "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/apply/page-content.tsx"
click node_wizard "https://github.com/salaudeenabdulkabir/cyndy-edu/tree/main/app/apply/sections"
click node_catalog_api "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/catalog/route.ts"
click node_applications_api "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/applications/route.ts"
click node_application_detail "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/applications/%5Bid%5D/route.ts"
click node_documents "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/applications/%5Bid%5D/documents/route.ts"
click node_receipt "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/payments/receipt/route.ts"
click node_status_ui "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/status/page.tsx"
click node_worker_ui "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/worker/page.tsx"
click node_admin_ui "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/admin/(protected)/page.tsx"
click node_admin_apps "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/admin/applications/route.ts"
click node_admin_catalog "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/admin/catalog-manager.tsx"
click node_catalog_admin_api "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/admin/catalog/route.ts"
click node_admin_payments "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/admin/payments/route.ts"
click node_admin_workers "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/admin/workers/route.ts"
click node_notifications "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/notifications/route.ts"
click node_database "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/lib/db/schema.ts"
click node_policy "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/lib/application-policy.ts"
click node_storage "https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/lib/r2.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_apply_ui,node_wizard,node_catalog_api,node_applications_api,node_application_detail,node_documents,node_receipt,node_status_ui toneBlue
class node_worker_ui toneAmber
class node_admin_ui,node_admin_apps,node_admin_catalog,node_catalog_admin_api,node_admin_payments,node_admin_workers toneMint
class node_notifications,node_database,node_policy,node_storage toneRose
class node_clerk,node_r2,node_applicant toneIndigo
```

## Components

### Applicant portal

- [Application wizard](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/apply/page-content.tsx): `app/apply/page-content.tsx`
- [Application sections](https://github.com/salaudeenabdulkabir/cyndy-edu/tree/main/app/apply/sections): `app/apply/sections`
- [Program catalog](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/catalog/route.ts): `app/api/catalog/route.ts`
- [Application records](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/applications/route.ts): `app/api/applications/route.ts`
- [Application detail](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/applications/%5Bid%5D/route.ts): `app/api/applications/[id]/route.ts`
- [Document handling](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/applications/%5Bid%5D/documents/route.ts): `app/api/applications/[id]/documents/route.ts`
- [Payment receipt](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/payments/receipt/route.ts): `app/api/payments/receipt/route.ts`
- [Application status](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/status/page.tsx): `app/status/page.tsx`

### Staff operations

- [Worker dashboard](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/worker/page.tsx): `app/worker/page.tsx`

### Administration

- [Admin dashboard](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/admin/(protected)/page.tsx): `app/admin/(protected)/page.tsx`
- [Application oversight](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/admin/applications/route.ts): `app/api/admin/applications/route.ts`
- [Catalog management](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/admin/catalog-manager.tsx): `app/admin/catalog-manager.tsx`
- [Catalog administration](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/admin/catalog/route.ts): `app/api/admin/catalog/route.ts`
- [Payment review](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/admin/payments/route.ts): `app/api/admin/payments/route.ts`
- [Worker management](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/admin/workers/route.ts): `app/api/admin/workers/route.ts`

### Platform services

- [Notifications](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/app/api/notifications/route.ts): `app/api/notifications/route.ts`
- [Portal database](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/lib/db/schema.ts): `lib/db/schema.ts`
- [Application policy](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/lib/application-policy.ts): `lib/application-policy.ts`
- [Private document storage](https://github.com/salaudeenabdulkabir/cyndy-edu/blob/main/lib/r2.ts): `lib/r2.ts`

### External services

- **Clerk identity**
- **Cloudflare R2**

### Other components

- **Applicant**

## Connections

- Applicant → Application wizard: completes form
- Application wizard → Program catalog: loads choices
- Application wizard → Application records: creates application
- Application wizard → Application detail: updates application
- Application wizard → Document handling: uploads documents
- Application wizard → Payment receipt: submits receipt
- Application sections → Application wizard: renders sections
- Program catalog → Portal database: reads catalog
- Application records → Portal database: reads and writes
- Application records → Application policy: shapes client data
- Application detail → Portal database: reads and updates
- Application detail → Application policy: checks submission
- Document handling → Portal database: reads and writes
- Document handling → Private document storage: stores and signs files
- Private document storage → Cloudflare R2: reads and writes
- Payment receipt → Portal database: records receipt
- Payment receipt → Private document storage: stores receipt
- Worker dashboard → Applicant: supports review
- Worker dashboard → Clerk identity: authenticates
- Admin dashboard → Application oversight: manages applications
- Admin dashboard → Catalog management: manages catalog
- Admin dashboard → Payment review: reviews payments
- Admin dashboard → Worker management: manages workers
- Catalog management → Catalog administration: saves catalog
- Catalog administration → Portal database: reads and writes
- Catalog administration → Portal database: imports programs
- Application oversight → Portal database: reads and updates
- Payment review → Portal database: confirms payment
- Payment review → Private document storage: signs receipt links
- Worker management → Portal database: reads and writes
- Worker management → Clerk identity: creates identity
- Notifications → Portal database: reads and updates
- Application status → Notifications: loads alerts
- Application records → Clerk identity: authenticates
- Program catalog → Clerk identity: authenticates
- Payment receipt → Clerk identity: authenticates
