# iadi01/siteon architecture

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

- Interactive diagram: https://gitdiagram.com/iadi01/siteon
- Repository: https://github.com/iadi01/siteon

## Overview

SiteOn is a React hackathon and competition platform. Participants discover events, register, provide UPI payment references, submit projects, and track results; administrators manage events, reconcile payments, review submissions, and export data. The graph includes the shared authentication and local database layers, plus the documented Google Sheets sync. Major README capabilities such as the flagship challenge and leaderboard are represented, but the excerpts do not establish their detailed internal data flow. Edges reflect shown routing/import references or explicit README descriptions.

Main entry points: [`src/App.jsx`](https://github.com/iadi01/siteon/blob/main/src/App.jsx) (Application router), [`src/services/db.js`](https://github.com/iadi01/siteon/blob/main/src/services/db.js) (Local database engine), [`src/pages/SubmitProject.jsx`](https://github.com/iadi01/siteon/blob/main/src/pages/SubmitProject.jsx) (Project submission), [`src/context/AuthContext.jsx`](https://github.com/iadi01/siteon/blob/main/src/context/AuthContext.jsx) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["Platform shell"]
  node_app["Application router<br/>[App.jsx]"]
  node_navbar["Navigation<br/>[Navbar.jsx]"]
  node_footer["Footer and consent<br/>[Footer.jsx]"]
end

subgraph group_participant["Participant experience"]
  node_authpage["Sign in / register<br/>[Auth.jsx]"]
  node_events["Hackathon discovery<br/>[Hackathons.jsx]"]
  node_eventdetail["Challenge detail"]
  node_payment["UPI registration<br/>[PaymentModal.jsx]"]
  node_profile["Participant profile<br/>[Profile.jsx]"]
  node_submission["Project submission<br/>[SubmitProject.jsx]"]
  node_dashboard["Participant dashboard<br/>[Dashboard.jsx]"]
  node_leaderboard["Leaderboard<br/>[Leaderboard.jsx]"]
end

subgraph group_operations["Competition operations"]
  node_admin_events["Event and challenge admin"]
  node_admin_payments["Payment reconciliation<br/>[AdminPayments.jsx]"]
  node_admin_review["Submission review"]
  node_admin_submissions["Submission management"]
  node_admin_users["User administration<br/>[AdminUsers.jsx]"]
  node_admin_exports["Exports<br/>[AdminExports.jsx]"]
end

subgraph group_services["Shared services"]
  node_auth["Authentication<br/>[AuthContext.jsx]"]
  node_database[("Local database engine<br/>[db.js]")]
  node_sheets["Google Sheets sync"]
  node_validators["URL validators<br/>[validators.js]"]
end

node_visitor(("Participant / admin"))
node_sheets_service["Google Apps Script"]
node_upi["UPI payment apps"]

node_visitor -->|"opens platform"| node_app
node_app -->|"provides auth"| node_auth
node_app -->|"renders"| node_navbar
node_app -->|"renders"| node_footer
node_app -->|"routes to"| node_authpage
node_app -->|"routes to"| node_events
node_app -->|"routes to"| node_eventdetail
node_app -->|"routes to"| node_profile
node_app -->|"routes to"| node_submission
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_leaderboard
node_app -->|"routes to"| node_admin_events
node_app -->|"routes to"| node_admin_payments
node_app -->|"routes to"| node_admin_review
node_app -->|"routes to"| node_admin_submissions
node_app -->|"routes to"| node_admin_users
node_app -->|"routes to"| node_admin_exports
node_authpage -->|"authenticates"| node_auth
node_auth -->|"reads / writes"| node_database
node_auth -->|"syncs user data"| node_sheets
node_eventdetail -->|"offers registration"| node_payment
node_payment -->|"records registration"| node_database
node_payment -.->|"pays via"| node_upi
node_submission -->|"stores submission"| node_database
node_submission -->|"validates links"| node_validators
node_submission -->|"syncs submission"| node_sheets
node_database -->|"validates stored links"| node_validators
node_sheets -->|"posts webhook"| node_sheets_service
node_admin_events -->|"manages events"| node_database
node_admin_payments -->|"reconciles payments"| node_database
node_admin_review -->|"reviews submission"| node_database
node_admin_submissions -->|"manages submissions"| node_database
node_admin_users -->|"manages users"| node_database
node_admin_exports -->|"reads records"| node_database
node_admin_exports -->|"exports data"| node_sheets
node_visitor -.->|"views rankings"| node_leaderboard

click node_app "https://github.com/iadi01/siteon/blob/main/src/App.jsx"
click node_navbar "https://github.com/iadi01/siteon/blob/main/src/components/Navbar.jsx"
click node_footer "https://github.com/iadi01/siteon/blob/main/src/components/Footer.jsx"
click node_auth "https://github.com/iadi01/siteon/blob/main/src/context/AuthContext.jsx"
click node_authpage "https://github.com/iadi01/siteon/blob/main/src/pages/Auth.jsx"
click node_events "https://github.com/iadi01/siteon/blob/main/src/pages/Hackathons.jsx"
click node_eventdetail "https://github.com/iadi01/siteon/blob/main/src/pages/HackathonDetail.jsx"
click node_payment "https://github.com/iadi01/siteon/blob/main/src/components/PaymentModal.jsx"
click node_profile "https://github.com/iadi01/siteon/blob/main/src/pages/Profile.jsx"
click node_submission "https://github.com/iadi01/siteon/blob/main/src/pages/SubmitProject.jsx"
click node_dashboard "https://github.com/iadi01/siteon/blob/main/src/pages/Dashboard.jsx"
click node_leaderboard "https://github.com/iadi01/siteon/blob/main/src/pages/Leaderboard.jsx"
click node_admin_events "https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminHackathons.jsx"
click node_admin_payments "https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminPayments.jsx"
click node_admin_review "https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminSubmissionReview.jsx"
click node_admin_submissions "https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminSubmissions.jsx"
click node_admin_users "https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminUsers.jsx"
click node_admin_exports "https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminExports.jsx"
click node_database "https://github.com/iadi01/siteon/blob/main/src/services/db.js"
click node_sheets "https://github.com/iadi01/siteon/blob/main/src/services/googleSheetService.js"
click node_validators "https://github.com/iadi01/siteon/blob/main/src/utils/validators.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_app,node_navbar,node_footer toneBlue
class node_authpage,node_events,node_eventdetail,node_payment,node_profile,node_submission,node_dashboard,node_leaderboard toneAmber
class node_admin_events,node_admin_payments,node_admin_review,node_admin_submissions,node_admin_users,node_admin_exports toneMint
class node_auth,node_database,node_sheets,node_validators toneRose
class node_visitor,node_sheets_service,node_upi toneIndigo
```

## Components

### Platform shell

- [Application router](https://github.com/iadi01/siteon/blob/main/src/App.jsx): `src/App.jsx`
- [Navigation](https://github.com/iadi01/siteon/blob/main/src/components/Navbar.jsx): `src/components/Navbar.jsx`
- [Footer and consent](https://github.com/iadi01/siteon/blob/main/src/components/Footer.jsx): `src/components/Footer.jsx`

### Participant experience

- [Sign in / register](https://github.com/iadi01/siteon/blob/main/src/pages/Auth.jsx): `src/pages/Auth.jsx`
- [Hackathon discovery](https://github.com/iadi01/siteon/blob/main/src/pages/Hackathons.jsx): `src/pages/Hackathons.jsx`
- [Challenge detail](https://github.com/iadi01/siteon/blob/main/src/pages/HackathonDetail.jsx): `src/pages/HackathonDetail.jsx`
- [UPI registration](https://github.com/iadi01/siteon/blob/main/src/components/PaymentModal.jsx): `src/components/PaymentModal.jsx`
- [Participant profile](https://github.com/iadi01/siteon/blob/main/src/pages/Profile.jsx): `src/pages/Profile.jsx`
- [Project submission](https://github.com/iadi01/siteon/blob/main/src/pages/SubmitProject.jsx): `src/pages/SubmitProject.jsx`
- [Participant dashboard](https://github.com/iadi01/siteon/blob/main/src/pages/Dashboard.jsx): `src/pages/Dashboard.jsx`
- [Leaderboard](https://github.com/iadi01/siteon/blob/main/src/pages/Leaderboard.jsx): `src/pages/Leaderboard.jsx`

### Competition operations

- [Event and challenge admin](https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminHackathons.jsx): `src/pages/admin/AdminHackathons.jsx`
- [Payment reconciliation](https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminPayments.jsx): `src/pages/admin/AdminPayments.jsx`
- [Submission review](https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminSubmissionReview.jsx): `src/pages/admin/AdminSubmissionReview.jsx`
- [Submission management](https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminSubmissions.jsx): `src/pages/admin/AdminSubmissions.jsx`
- [User administration](https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminUsers.jsx): `src/pages/admin/AdminUsers.jsx`
- [Exports](https://github.com/iadi01/siteon/blob/main/src/pages/admin/AdminExports.jsx): `src/pages/admin/AdminExports.jsx`

### Shared services

- [Authentication](https://github.com/iadi01/siteon/blob/main/src/context/AuthContext.jsx): `src/context/AuthContext.jsx`
- [Local database engine](https://github.com/iadi01/siteon/blob/main/src/services/db.js): `src/services/db.js`
- [Google Sheets sync](https://github.com/iadi01/siteon/blob/main/src/services/googleSheetService.js): `src/services/googleSheetService.js`
- [URL validators](https://github.com/iadi01/siteon/blob/main/src/utils/validators.js): `src/utils/validators.js`

### Other components

- **Participant / admin**
- **Google Apps Script**
- **UPI payment apps**

## Connections

- Participant / admin → Application router: opens platform (evidence: `src/App.jsx`)
- Application router → Authentication: provides auth (evidence: `src/App.jsx`)
- Application router → Navigation: renders (evidence: `src/App.jsx`)
- Application router → Footer and consent: renders (evidence: `src/App.jsx`)
- Application router → Sign in / register: routes to (evidence: `src/App.jsx`)
- Application router → Hackathon discovery: routes to (evidence: `src/App.jsx`)
- Application router → Challenge detail: routes to (evidence: `src/App.jsx`)
- Application router → Participant profile: routes to (evidence: `src/App.jsx`)
- Application router → Project submission: routes to (evidence: `src/App.jsx`)
- Application router → Participant dashboard: routes to (evidence: `src/App.jsx`)
- Application router → Leaderboard: routes to (evidence: `src/App.jsx`)
- Application router → Event and challenge admin: routes to (evidence: `src/App.jsx`)
- Application router → Payment reconciliation: routes to (evidence: `src/App.jsx`)
- Application router → Submission review: routes to (evidence: `src/App.jsx`)
- Application router → Submission management: routes to (evidence: `src/App.jsx`)
- Application router → User administration: routes to (evidence: `src/App.jsx`)
- Application router → Exports: routes to (evidence: `src/App.jsx`)
- Sign in / register → Authentication: authenticates (evidence: `src/pages/Auth.jsx`)
- Authentication → Local database engine: reads / writes (evidence: `src/context/AuthContext.jsx`)
- Authentication → Google Sheets sync: syncs user data (evidence: `src/context/AuthContext.jsx`)
- Challenge detail → UPI registration: offers registration (evidence: `src/pages/HackathonDetail.jsx`)
- UPI registration → Local database engine: records registration (evidence: `src/components/PaymentModal.jsx`)
- UPI registration → UPI payment apps: pays via (evidence: `README.md`)
- Project submission → Local database engine: stores submission (evidence: `src/pages/SubmitProject.jsx`)
- Project submission → URL validators: validates links (evidence: `src/pages/SubmitProject.jsx`)
- Project submission → Google Sheets sync: syncs submission (evidence: `src/pages/SubmitProject.jsx`)
- Local database engine → URL validators: validates stored links (evidence: `src/services/db.js`)
- Google Sheets sync → Google Apps Script: posts webhook (evidence: `src/services/googleSheetService.js`)
- Event and challenge admin → Local database engine: manages events (evidence: `src/pages/admin/AdminHackathons.jsx`)
- Payment reconciliation → Local database engine: reconciles payments (evidence: `src/pages/admin/AdminPayments.jsx`)
- Submission review → Local database engine: reviews submission (evidence: `src/pages/admin/AdminSubmissionReview.jsx`)
- Submission management → Local database engine: manages submissions (evidence: `src/pages/admin/AdminSubmissions.jsx`)
- User administration → Local database engine: manages users (evidence: `src/pages/admin/AdminUsers.jsx`)
- Exports → Local database engine: reads records (evidence: `src/pages/admin/AdminExports.jsx`)
- Exports → Google Sheets sync: exports data (evidence: `src/pages/admin/AdminExports.jsx`)
- Participant / admin → Leaderboard: views rankings (evidence: `README.md`)
