# ollienunn/secure-software-ollienunn001-1-main architecture

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

- Interactive diagram: https://gitdiagram.com/ollienunn/secure-software-ollienunn001-1-main
- Repository: https://github.com/ollienunn/secure-software-ollienunn001-1-main

## Overview

Small-Brain is a browser-based quiz authoring and live-play application, backed by a Flask API. Admins register or log in, create and edit quizzes, launch sessions, and review results; players join with a session ID, answer timed questions, and see results. The graph follows the documented frontend-service/API/backend flow and the sampled authentication and session-start code. Several route, service, and core implementations were not sampled, so their documented responsibilities are shown without asserting uncertain internal calls.

Main entry points: [`frontend/src/App.jsx`](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/App.jsx) (Route application), [`frontend/src/services/api.js`](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/api.js) (API transport), [`frontend/src/routes`](https://github.com/ollienunn/secure-software-ollienunn001-1-main/tree/main/frontend/src/routes) (Admin routes), [`backend/app.py`](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/app.py) (HTTP routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["Route application<br/>[App.jsx]"]
  node_admin_routes["Admin routes"]
  node_play_routes["Player routes"]
  node_secured["Route protection<br/>[SecuredRoutes.jsx]"]
  node_auth_ui["Auth gate<br/>[Authorisation.jsx]"]
  node_auth_client["Auth client<br/>[auth.js]"]
  node_game_client["Quiz client<br/>[game.js]"]
  node_play_client["Play client<br/>[play.js]"]
  node_session_client["Session client<br/>[session.js]"]
  node_http_client["API transport<br/>[api.js]"]
end

subgraph group_backend_api["Flask API"]
  node_flask["HTTP routes<br/>[app.py]"]
  node_auth_service["Authentication<br/>[auth.py]"]
  node_game_service["Quiz and sessions<br/>[game.py]"]
  node_player_service["Player actions<br/>[player.py]"]
end

subgraph group_backend_domain["Backend domain logic"]
  node_auth_core["Auth logic<br/>[auth_core.py]"]
  node_game_core["Game logic<br/>[game_core.py]"]
  node_player_core["Player logic<br/>[player_core.py]"]
end

subgraph group_state["Persistent state"]
  node_json_store[("JSON data<br/>[data.py]")]
end

node_admin(("Quiz admin"))
node_player(("Quiz player"))

node_admin -->|"uses"| node_app
node_player -->|"uses"| node_app
node_app -->|"dispatches"| node_admin_routes
node_app -->|"dispatches"| node_play_routes
node_app -->|"protects"| node_secured
node_secured -->|"checks access"| node_auth_ui
node_auth_ui -->|"validates token"| node_auth_client
node_admin_routes -->|"authenticates"| node_auth_client
node_admin_routes -->|"edits quizzes"| node_game_client
node_admin_routes -->|"manages sessions"| node_session_client
node_play_routes -->|"plays sessions"| node_play_client
node_auth_client -->|"requests"| node_http_client
node_game_client -->|"requests"| node_http_client
node_play_client -->|"requests"| node_http_client
node_session_client -->|"requests"| node_http_client
node_http_client -->|"HTTP requests"| node_flask
node_flask -->|"dispatches auth"| node_auth_service
node_flask -->|"dispatches game"| node_game_service
node_flask -->|"dispatches play"| node_player_service
node_auth_service -->|"uses auth logic"| node_auth_core
node_game_service -->|"uses game logic"| node_game_core
node_player_service -->|"uses player logic"| node_player_core
node_auth_service -->|"reads and writes"| node_json_store
node_auth_core -->|"reads users"| node_json_store
node_game_core -->|"accesses data"| node_json_store
node_player_core -->|"accesses data"| node_json_store

click node_app "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/App.jsx"
click node_admin_routes "https://github.com/ollienunn/secure-software-ollienunn001-1-main/tree/main/frontend/src/routes"
click node_play_routes "https://github.com/ollienunn/secure-software-ollienunn001-1-main/tree/main/frontend/src/routes"
click node_secured "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/routes/SecuredRoutes.jsx"
click node_auth_ui "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/components/auth/Authorisation.jsx"
click node_auth_client "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/auth.js"
click node_game_client "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/game.js"
click node_play_client "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/play.js"
click node_session_client "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/session.js"
click node_http_client "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/api.js"
click node_flask "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/app.py"
click node_auth_service "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/services/auth.py"
click node_game_service "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/services/game.py"
click node_player_service "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/services/player.py"
click node_auth_core "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/core/auth_core.py"
click node_game_core "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/core/game_core.py"
click node_player_core "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/core/player_core.py"
click node_json_store "https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/database/data.py"

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_admin_routes,node_play_routes,node_secured,node_auth_ui,node_auth_client,node_game_client,node_play_client,node_session_client,node_http_client toneBlue
class node_flask,node_auth_service,node_game_service,node_player_service toneAmber
class node_auth_core,node_game_core,node_player_core toneMint
class node_json_store toneRose
class node_admin,node_player toneIndigo
```

## Components

### Web application

- [Route application](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Admin routes](https://github.com/ollienunn/secure-software-ollienunn001-1-main/tree/main/frontend/src/routes): `frontend/src/routes`
- [Player routes](https://github.com/ollienunn/secure-software-ollienunn001-1-main/tree/main/frontend/src/routes): `frontend/src/routes`
- [Route protection](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/routes/SecuredRoutes.jsx): `frontend/src/routes/SecuredRoutes.jsx`
- [Auth gate](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/components/auth/Authorisation.jsx): `frontend/src/components/auth/Authorisation.jsx`
- [Auth client](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/auth.js): `frontend/src/services/auth.js`
- [Quiz client](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/game.js): `frontend/src/services/game.js`
- [Play client](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/play.js): `frontend/src/services/play.js`
- [Session client](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/session.js): `frontend/src/services/session.js`
- [API transport](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### Flask API

- [HTTP routes](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/app.py): `backend/app.py`
- [Authentication](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/services/auth.py): `backend/services/auth.py`
- [Quiz and sessions](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/services/game.py): `backend/services/game.py`
- [Player actions](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/services/player.py): `backend/services/player.py`

### Backend domain logic

- [Auth logic](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/core/auth_core.py): `backend/core/auth_core.py`
- [Game logic](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/core/game_core.py): `backend/core/game_core.py`
- [Player logic](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/core/player_core.py): `backend/core/player_core.py`

### Persistent state

- [JSON data](https://github.com/ollienunn/secure-software-ollienunn001-1-main/blob/main/backend/database/data.py): `backend/database/data.py`

### Other components

- **Quiz admin**
- **Quiz player**

## Connections

- Quiz admin → Route application: uses
- Quiz player → Route application: uses
- Route application → Admin routes: dispatches
- Route application → Player routes: dispatches
- Route application → Route protection: protects
- Route protection → Auth gate: checks access
- Auth gate → Auth client: validates token
- Admin routes → Auth client: authenticates
- Admin routes → Quiz client: edits quizzes
- Admin routes → Session client: manages sessions
- Player routes → Play client: plays sessions
- Auth client → API transport: requests
- Quiz client → API transport: requests
- Play client → API transport: requests
- Session client → API transport: requests
- API transport → HTTP routes: HTTP requests
- HTTP routes → Authentication: dispatches auth
- HTTP routes → Quiz and sessions: dispatches game
- HTTP routes → Player actions: dispatches play
- Authentication → Auth logic: uses auth logic
- Quiz and sessions → Game logic: uses game logic
- Player actions → Player logic: uses player logic
- Authentication → JSON data: reads and writes
- Auth logic → JSON data: reads users
- Game logic → JSON data: accesses data
- Player logic → JSON data: accesses data
