# globallink68-pixel/sampark_ngo_v2 architecture

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

- Interactive diagram: https://gitdiagram.com/globallink68-pixel/sampark_ngo_v2
- Repository: https://github.com/globallink68-pixel/sampark_ngo_v2

## Overview

Sampark Academy is a public-facing community organization site with a React frontend and Express/MySQL backend. Visitors browse organization and program information, submit contact enquiries, and donate through Razorpay checkout; administrators sign in to manage content, enquiries, and donations. The graph preserves those documented capabilities, but the app excerpt is partial, so some endpoint wiring and the contact/Turnstile implementation are shown only at the documented subsystem level.

Main entry points: [`server/app.js`](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/app.js) (Express API), [`src/lib/api.js`](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/api.js) (Public API client), [`src/main.jsx`](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/main.jsx) (Public site), [`src/lib/contact-submission.js`](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/contact-submission.js) (Contact submission)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public experience"]
  node_site["Public site<br/>[main.jsx]"]
  node_public_api["Public API client<br/>[api.js]"]
  node_checkout["Donation checkout<br/>[checkout.js]"]
  node_contact["Contact submission"]
  node_org_links["Organization links"]
end

subgraph group_admin["Administration"]
  node_admin_ui["Admin console<br/>[admin.jsx]"]
  node_admin_mutation["Admin mutations<br/>[admin-mutation.js]"]
end

subgraph group_backend["API and services"]
  node_server["Server entry<br/>[server.js]"]
  node_app["Express API<br/>[app.js]"]
  node_auth["Session authorization<br/>[auth.js]"]
  node_payment_helpers["Payment security<br/>[payments.js]"]
end

subgraph group_state["Data and integrations"]
  node_db_config["Database pool<br/>[db.js]"]
  node_database[("Application database")]
  node_uploads[("Upload files<br/>[app.js]")]
  node_razorpay["Razorpay"]
  node_turnstile["Cloudflare Turnstile"]
end

node_visitor(("Visitor"))

node_visitor -->|"browses and submits"| node_site
node_site -->|"requests content"| node_public_api
node_public_api -->|"sends API requests"| node_app
node_app -->|"returns API data"| node_public_api
node_site -->|"starts donation"| node_checkout
node_checkout -->|"creates and verifies"| node_public_api
node_site -->|"submits enquiry"| node_contact
node_contact -->|"sends enquiry"| node_public_api
node_site -->|"formats social links"| node_org_links
node_visitor -->|"administers site"| node_admin_ui
node_admin_ui -->|"performs changes"| node_admin_mutation
node_admin_ui -->|"requests admin APIs"| node_public_api
node_admin_mutation -->|"sends mutations"| node_public_api
node_server -->|"starts"| node_app
node_app -->|"guards admin routes"| node_auth
node_auth -->|"checks admin"| node_db_config
node_app -->|"reads and writes"| node_db_config
node_db_config -->|"queries"| node_database
node_app -->|"stores and serves files"| node_uploads
node_app -->|"validates signatures"| node_payment_helpers
node_app -->|"creates payment orders"| node_razorpay
node_razorpay -->|"sends payment webhooks"| node_app
node_contact -.->|"verifies challenge"| node_turnstile

click node_site "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/main.jsx"
click node_public_api "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/api.js"
click node_checkout "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/checkout.js"
click node_contact "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/contact-submission.js"
click node_org_links "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/organization-links.js"
click node_admin_ui "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/admin.jsx"
click node_admin_mutation "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/admin-mutation.js"
click node_server "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/server.js"
click node_app "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/app.js"
click node_auth "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/middleware/auth.js"
click node_payment_helpers "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/payments.js"
click node_db_config "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/config/db.js"
click node_database "https://github.com/globallink68-pixel/sampark_ngo_v2/tree/main/database/migrations"
click node_uploads "https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/app.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_site,node_public_api,node_checkout,node_contact,node_org_links toneBlue
class node_admin_ui,node_admin_mutation toneAmber
class node_server,node_app,node_auth,node_payment_helpers toneMint
class node_db_config,node_database,node_uploads,node_razorpay,node_turnstile toneRose
class node_visitor toneIndigo
```

## Components

### Public experience

- [Public site](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/main.jsx): `src/main.jsx`
- [Public API client](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/api.js): `src/lib/api.js`
- [Donation checkout](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/checkout.js): `src/lib/checkout.js`
- [Contact submission](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/contact-submission.js): `src/lib/contact-submission.js`
- [Organization links](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/organization-links.js): `src/lib/organization-links.js`

### Administration

- [Admin console](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/admin.jsx): `src/admin.jsx`
- [Admin mutations](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/src/lib/admin-mutation.js): `src/lib/admin-mutation.js`

### API and services

- [Server entry](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/server.js): `server/server.js`
- [Express API](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/app.js): `server/app.js`
- [Session authorization](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/middleware/auth.js): `server/middleware/auth.js`
- [Payment security](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/payments.js): `server/payments.js`

### Data and integrations

- [Database pool](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/config/db.js): `server/config/db.js`
- [Application database](https://github.com/globallink68-pixel/sampark_ngo_v2/tree/main/database/migrations): `database/migrations`
- [Upload files](https://github.com/globallink68-pixel/sampark_ngo_v2/blob/main/server/app.js): `server/app.js`
- **Razorpay**
- **Cloudflare Turnstile**

### Other components

- **Visitor**

## Connections

- Visitor → Public site: browses and submits
- Public site → Public API client: requests content
- Public API client → Express API: sends API requests
- Express API → Public API client: returns API data
- Public site → Donation checkout: starts donation
- Donation checkout → Public API client: creates and verifies
- Public site → Contact submission: submits enquiry
- Contact submission → Public API client: sends enquiry
- Public site → Organization links: formats social links
- Visitor → Admin console: administers site
- Admin console → Admin mutations: performs changes
- Admin console → Public API client: requests admin APIs
- Admin mutations → Public API client: sends mutations
- Server entry → Express API: starts
- Express API → Session authorization: guards admin routes
- Session authorization → Database pool: checks admin
- Express API → Database pool: reads and writes
- Database pool → Application database: queries
- Express API → Upload files: stores and serves files
- Express API → Payment security: validates signatures
- Express API → Razorpay: creates payment orders
- Razorpay → Express API: sends payment webhooks
- Contact submission → Cloudflare Turnstile: verifies challenge
