# prabhdeepsingh-design/gnes-apex-2026 architecture

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

- Interactive diagram: https://gitdiagram.com/prabhdeepsingh-design/gnes-apex-2026
- Repository: https://github.com/prabhdeepsingh-design/gnes-apex-2026

## Overview

GNE’s APEX 2026 is a competition portal and event-operations engine. Students navigate a track’s rules and theme to submit a validated project or design file; supervisors authenticate in the admin hub to manage synchronized event timers. The runtime has both a native Node server and Vercel API handlers, with Google Apps Script/Drive as the documented cloud submission destination. The root and public client scripts are both core modules; their exact deployment relationship is not established by the excerpts. Some track capabilities are documented but their page implementation was not sampled.

Main entry points: [`script.js`](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/script.js) (Browser event logic), [`server.js`](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/server.js) (Native HTTP server), [`index.html`](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/index.html) (Track navigation), [`web-wizards.html`](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/web-wizards.html) (Web Wizards rules)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portal["Competition portal"]
  node_home["Track navigation<br/>[index.html]"]
  node_web_track["Web Wizards rules<br/>[web-wizards.html]"]
  node_web_theme["Web Wizards theme"]
  node_web_submit["Web Wizards workspace"]
  node_identity_track["Digital Identity rules"]
  node_identity_theme["Digital Identity theme"]
  node_identity_submit["Digital Identity workspace"]
end

subgraph group_operations["Event operations"]
  node_admin_hub["Admin control hub<br/>[admin.html]"]
end

subgraph group_runtime["Runtime services"]
  node_client_logic["Browser event logic<br/>[script.js]"]
  node_public_client["Public browser logic<br/>[script.js]"]
  node_native_server["Native HTTP server<br/>[server.js]"]
  node_cloud_timer["Cloud timer API<br/>[timer.js]"]
  node_admin_login["Admin login API<br/>[login.js]"]
  node_network_info["Network info API<br/>[network-info.js]"]
end

subgraph group_submission["Submission services"]
  node_upload_api["Cloud upload relay<br/>[upload.js]"]
  node_local_logs[("Local submission logs")]
  node_drive_bridge["Apps Script bridge"]
end

node_students(("Student participants"))
node_supervisors(("Event supervisors"))
node_google_drive[("Google Drive")]

node_students -->|"browse"| node_home
node_home -->|"navigate"| node_web_track
node_web_track -->|"open theme"| node_web_theme
node_web_theme -->|"submit project"| node_web_submit
node_home -->|"navigate"| node_identity_track
node_identity_track -->|"open theme"| node_identity_theme
node_identity_theme -->|"submit design"| node_identity_submit
node_students -->|"upload archive"| node_web_submit
node_students -->|"upload artwork"| node_identity_submit
node_supervisors -->|"manage events"| node_admin_hub
node_admin_hub -.->|"uses client logic"| node_client_logic
node_client_logic -->|"verify passcode"| node_admin_login
node_client_logic -->|"read and mutate"| node_cloud_timer
node_client_logic -->|"poll and stream"| node_native_server
node_public_client -.->|"optional upload route"| node_upload_api
node_client_logic -->|"posts submission"| node_drive_bridge
node_drive_bridge -->|"stores submissions"| node_google_drive
node_students -->|"use local portal"| node_native_server
node_native_server -->|"records submissions"| node_local_logs
node_native_server -.->|"relays uploads"| node_google_drive
node_client_logic -.->|"request network details"| node_network_info
node_supervisors -.->|"timer commands"| node_cloud_timer

click node_home "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/index.html"
click node_web_track "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/web-wizards.html"
click node_web_theme "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/web-wizards-theme.html"
click node_web_submit "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/web-wizards-upload.html"
click node_identity_track "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/digital-identity.html"
click node_identity_theme "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/digital-identity-theme.html"
click node_identity_submit "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/digital-identity-upload.html"
click node_admin_hub "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/admin.html"
click node_client_logic "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/script.js"
click node_public_client "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/public/script.js"
click node_native_server "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/server.js"
click node_cloud_timer "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/api/timer.js"
click node_admin_login "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/api/admin/login.js"
click node_network_info "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/api/network-info.js"
click node_upload_api "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/api/upload.js"
click node_local_logs "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/submissions/submissions_log.json"
click node_drive_bridge "https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/backend/ApexDriveUploader.gs"

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_home,node_web_track,node_web_theme,node_web_submit,node_identity_track,node_identity_theme,node_identity_submit toneBlue
class node_admin_hub,node_google_drive toneAmber
class node_client_logic,node_public_client,node_native_server,node_cloud_timer,node_admin_login,node_network_info toneMint
class node_upload_api,node_local_logs,node_drive_bridge toneRose
class node_students,node_supervisors toneIndigo
```

## Components

### Competition portal

- [Track navigation](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/index.html): `index.html`
- [Web Wizards rules](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/web-wizards.html): `web-wizards.html`
- [Web Wizards theme](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/web-wizards-theme.html): `web-wizards-theme.html`
- [Web Wizards workspace](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/web-wizards-upload.html): `web-wizards-upload.html`
- [Digital Identity rules](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/digital-identity.html): `digital-identity.html`
- [Digital Identity theme](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/digital-identity-theme.html): `digital-identity-theme.html`
- [Digital Identity workspace](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/digital-identity-upload.html): `digital-identity-upload.html`

### Event operations

- [Admin control hub](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/admin.html): `admin.html`

### Runtime services

- [Browser event logic](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/script.js): `script.js`
- [Public browser logic](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/public/script.js): `public/script.js`
- [Native HTTP server](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/server.js): `server.js`
- [Cloud timer API](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/api/timer.js): `api/timer.js`
- [Admin login API](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/api/admin/login.js): `api/admin/login.js`
- [Network info API](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/api/network-info.js): `api/network-info.js`

### Submission services

- [Cloud upload relay](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/api/upload.js): `api/upload.js`
- [Local submission logs](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/submissions/submissions_log.json): `submissions/submissions_log.json`
- [Apps Script bridge](https://github.com/prabhdeepsingh-design/gnes-apex-2026/blob/main/backend/ApexDriveUploader.gs): `backend/ApexDriveUploader.gs`

### Other components

- **Student participants**
- **Event supervisors**
- **Google Drive**

## Connections

- Student participants → Track navigation: browse (evidence: `README.md`)
- Track navigation → Web Wizards rules: navigate (evidence: `README.md`)
- Web Wizards rules → Web Wizards theme: open theme (evidence: `README.md`)
- Web Wizards theme → Web Wizards workspace: submit project (evidence: `README.md`)
- Track navigation → Digital Identity rules: navigate (evidence: `README.md`)
- Digital Identity rules → Digital Identity theme: open theme (evidence: `README.md`)
- Digital Identity theme → Digital Identity workspace: submit design (evidence: `README.md`)
- Student participants → Web Wizards workspace: upload archive (evidence: `README.md`)
- Student participants → Digital Identity workspace: upload artwork (evidence: `README.md`)
- Event supervisors → Admin control hub: manage events (evidence: `README.md`)
- Admin control hub → Browser event logic: uses client logic
- Browser event logic → Admin login API: verify passcode (evidence: `script.js`)
- Browser event logic → Cloud timer API: read and mutate (evidence: `script.js`)
- Browser event logic → Native HTTP server: poll and stream (evidence: `script.js`)
- Public browser logic → Cloud upload relay: optional upload route
- Browser event logic → Apps Script bridge: posts submission (evidence: `script.js`)
- Apps Script bridge → Google Drive: stores submissions (evidence: `README.md`)
- Student participants → Native HTTP server: use local portal (evidence: `README.md`)
- Native HTTP server → Local submission logs: records submissions (evidence: `server.js`)
- Native HTTP server → Google Drive: relays uploads
- Browser event logic → Network info API: request network details
- Event supervisors → Cloud timer API: timer commands
