# uniqueseaweb/reactapp architecture

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

- Interactive diagram: https://gitdiagram.com/uniqueseaweb/reactapp
- Repository: https://github.com/uniqueseaweb/reactapp

## Overview

This repository is a static launcher for four separate React apps: ToDo, a 3D solar-system viewer, a 3D action game, and a futsal tournament manager. The futsal workflow runs from tournament creation and shared access through team and match management to schedules and rankings; tournament state is fetched and changed through an API backed by Supabase or a local demo mode. The other apps have independent entry points and runtime behavior. Edges reflect README statements or shown imports and calls; unsampled details are omitted.

Main entry points: [`src/futsal/FutsalApp.jsx`](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/FutsalApp.jsx) (Tournament router), [`src/titan/game/Game.js`](https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/Game.js) (Game engine), [`index.html`](https://github.com/uniqueseaweb/reactapp/blob/main/index.html) (App links), [`src/futsal/main.jsx`](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/main.jsx) (Tournament entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launcher["App launcher"]
  node_launcher_page["App links<br/>[index.html]"]
end

subgraph group_futsal["Tournament manager"]
  node_futsal_entry["Tournament entry<br/>[main.jsx]"]
  node_futsal_router["Tournament router<br/>[FutsalApp.jsx]"]
  node_tournament_data["Tournament data<br/>[hooks.js]"]
  node_futsal_api["RPC client<br/>[api.js]"]
  node_demo_backend[("Demo storage<br/>[demoBackend.js]")]
  node_supabase[("Supabase RPC<br/>[schema.sql]")]
  node_tournament_home["Tournament creation<br/>[Home.jsx]"]
  node_schedule_view["Schedule view<br/>[ScheduleView.jsx]"]
  node_match_view["Match details<br/>[MatchView.jsx]"]
  node_teams_view["Team members<br/>[TeamsView.jsx]"]
  node_admin_view["Tournament admin<br/>[AdminView.jsx]"]
  node_schedule_logic["Schedule builder<br/>[logic.js]"]
  node_ranking_views["Rankings<br/>[RankingViews.jsx]"]
  node_futsal_format["Display formatting<br/>[format.js]"]
  node_futsal_ui["Form components<br/>[ui.jsx]"]
end

subgraph group_solar["Solar viewer"]
  node_solar_entry["Solar entry<br/>[main.jsx]"]
  node_solar_app["Viewer controls<br/>[SolarApp.jsx]"]
  node_solar_scene["3D scene<br/>[Scene.jsx]"]
  node_solar_bodies["Body data<br/>[bodies.js]"]
  node_solar_textures["Planet textures<br/>[textures.js]"]
end

subgraph group_titan["Action game"]
  node_titan_entry["Game entry<br/>[main.jsx]"]
  node_titan_app["Game interface<br/>[TitanApp.jsx]"]
  node_game_engine["Game engine<br/>[Game.js]"]
  node_player["Player movement<br/>[player.js]"]
  node_game_world["World and collisions<br/>[world.js]"]
  node_titan_enemy["Titan enemy<br/>[titan.js]"]
  node_game_effects["Combat effects<br/>[effects.js]"]
  node_game_audio["Synthesized audio<br/>[audio.js]"]
  node_game_textures["Generated textures<br/>[textures.js]"]
end

subgraph group_todo["ToDo app"]
  node_todo_entry["ToDo entry<br/>[main.jsx]"]
  node_todo_app["Task manager<br/>[App.jsx]"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens"| node_launcher_page
node_launcher_page -->|"links to"| node_todo_entry
node_launcher_page -->|"links to"| node_solar_entry
node_launcher_page -->|"links to"| node_titan_entry
node_launcher_page -->|"links to"| node_futsal_entry
node_visitor -->|"opens"| node_futsal_entry
node_futsal_entry -->|"renders"| node_futsal_router
node_futsal_router -->|"loads"| node_tournament_data
node_tournament_data -->|"calls"| node_futsal_api
node_futsal_api -->|"uses locally"| node_demo_backend
node_futsal_api -->|"calls RPC"| node_supabase
node_futsal_router -->|"renders"| node_tournament_home
node_futsal_router -->|"routes to"| node_schedule_view
node_futsal_router -->|"routes to"| node_match_view
node_futsal_router -->|"routes to"| node_teams_view
node_futsal_router -->|"routes to"| node_admin_view
node_futsal_router -->|"routes to"| node_ranking_views
node_admin_view -->|"builds preview"| node_schedule_logic
node_ranking_views -->|"calculates rankings"| node_schedule_logic
node_futsal_router -->|"uses"| node_futsal_ui
node_admin_view -->|"uses forms"| node_futsal_ui
node_match_view -->|"uses forms"| node_futsal_ui
node_futsal_router -->|"formats dates"| node_futsal_format
node_futsal_entry -->|"renders"| node_solar_app
node_solar_app -->|"renders"| node_solar_scene
node_solar_scene -->|"reads data"| node_solar_bodies
node_solar_scene -->|"generates textures"| node_solar_textures
node_titan_entry -->|"renders"| node_titan_app
node_titan_app -->|"creates game"| node_game_engine
node_game_engine -->|"uses"| node_player
node_game_engine -->|"uses"| node_game_world
node_game_engine -->|"creates"| node_titan_enemy
node_game_engine -->|"uses"| node_game_effects
node_game_engine -->|"uses"| node_game_audio
node_game_engine -->|"uses"| node_game_textures
node_game_world -->|"uses"| node_game_textures
node_todo_entry -->|"renders"| node_todo_app
node_visitor -->|"manages tasks"| node_todo_app

click node_launcher_page "https://github.com/uniqueseaweb/reactapp/blob/main/index.html"
click node_futsal_entry "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/main.jsx"
click node_futsal_router "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/FutsalApp.jsx"
click node_tournament_data "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/hooks.js"
click node_futsal_api "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/api.js"
click node_demo_backend "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/demoBackend.js"
click node_supabase "https://github.com/uniqueseaweb/reactapp/blob/main/supabase/schema.sql"
click node_tournament_home "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/Home.jsx"
click node_schedule_view "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/ScheduleView.jsx"
click node_match_view "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/MatchView.jsx"
click node_teams_view "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/TeamsView.jsx"
click node_admin_view "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/AdminView.jsx"
click node_schedule_logic "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/logic.js"
click node_ranking_views "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/RankingViews.jsx"
click node_futsal_format "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/format.js"
click node_futsal_ui "https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/ui.jsx"
click node_solar_entry "https://github.com/uniqueseaweb/reactapp/blob/main/src/solar/main.jsx"
click node_solar_app "https://github.com/uniqueseaweb/reactapp/blob/main/src/solar/SolarApp.jsx"
click node_solar_scene "https://github.com/uniqueseaweb/reactapp/blob/main/src/solar/Scene.jsx"
click node_solar_bodies "https://github.com/uniqueseaweb/reactapp/blob/main/src/solar/bodies.js"
click node_solar_textures "https://github.com/uniqueseaweb/reactapp/blob/main/src/solar/textures.js"
click node_titan_entry "https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/main.jsx"
click node_titan_app "https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/TitanApp.jsx"
click node_game_engine "https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/Game.js"
click node_player "https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/player.js"
click node_game_world "https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/world.js"
click node_titan_enemy "https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/titan.js"
click node_game_effects "https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/effects.js"
click node_game_audio "https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/audio.js"
click node_game_textures "https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/textures.js"
click node_todo_entry "https://github.com/uniqueseaweb/reactapp/blob/main/src/todo/main.jsx"
click node_todo_app "https://github.com/uniqueseaweb/reactapp/blob/main/src/todo/App.jsx"

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_launcher_page toneBlue
class node_futsal_entry,node_futsal_router,node_tournament_data,node_futsal_api,node_demo_backend,node_supabase,node_tournament_home,node_schedule_view,node_match_view,node_teams_view,node_admin_view,node_schedule_logic,node_ranking_views,node_futsal_format,node_futsal_ui toneAmber
class node_solar_entry,node_solar_app,node_solar_scene,node_solar_bodies,node_solar_textures toneMint
class node_titan_entry,node_titan_app,node_game_engine,node_player,node_game_world,node_titan_enemy,node_game_effects,node_game_audio,node_game_textures toneRose
class node_todo_entry,node_todo_app,node_visitor toneIndigo
```

## Components

### App launcher

- [App links](https://github.com/uniqueseaweb/reactapp/blob/main/index.html): `index.html`

### Tournament manager

- [Tournament entry](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/main.jsx): `src/futsal/main.jsx`
- [Tournament router](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/FutsalApp.jsx): `src/futsal/FutsalApp.jsx`
- [Tournament data](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/hooks.js): `src/futsal/hooks.js`
- [RPC client](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/api.js): `src/futsal/api.js`
- [Demo storage](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/demoBackend.js): `src/futsal/demoBackend.js`
- [Supabase RPC](https://github.com/uniqueseaweb/reactapp/blob/main/supabase/schema.sql): `supabase/schema.sql`
- [Tournament creation](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/Home.jsx): `src/futsal/views/Home.jsx`
- [Schedule view](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/ScheduleView.jsx): `src/futsal/views/ScheduleView.jsx`
- [Match details](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/MatchView.jsx): `src/futsal/views/MatchView.jsx`
- [Team members](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/TeamsView.jsx): `src/futsal/views/TeamsView.jsx`
- [Tournament admin](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/AdminView.jsx): `src/futsal/views/AdminView.jsx`
- [Schedule builder](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/logic.js): `src/futsal/logic.js`
- [Rankings](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/views/RankingViews.jsx): `src/futsal/views/RankingViews.jsx`
- [Display formatting](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/format.js): `src/futsal/format.js`
- [Form components](https://github.com/uniqueseaweb/reactapp/blob/main/src/futsal/ui.jsx): `src/futsal/ui.jsx`

### Solar viewer

- [Solar entry](https://github.com/uniqueseaweb/reactapp/blob/main/src/solar/main.jsx): `src/solar/main.jsx`
- [Viewer controls](https://github.com/uniqueseaweb/reactapp/blob/main/src/solar/SolarApp.jsx): `src/solar/SolarApp.jsx`
- [3D scene](https://github.com/uniqueseaweb/reactapp/blob/main/src/solar/Scene.jsx): `src/solar/Scene.jsx`
- [Body data](https://github.com/uniqueseaweb/reactapp/blob/main/src/solar/bodies.js): `src/solar/bodies.js`
- [Planet textures](https://github.com/uniqueseaweb/reactapp/blob/main/src/solar/textures.js): `src/solar/textures.js`

### Action game

- [Game entry](https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/main.jsx): `src/titan/main.jsx`
- [Game interface](https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/TitanApp.jsx): `src/titan/TitanApp.jsx`
- [Game engine](https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/Game.js): `src/titan/game/Game.js`
- [Player movement](https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/player.js): `src/titan/game/player.js`
- [World and collisions](https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/world.js): `src/titan/game/world.js`
- [Titan enemy](https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/titan.js): `src/titan/game/titan.js`
- [Combat effects](https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/effects.js): `src/titan/game/effects.js`
- [Synthesized audio](https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/audio.js): `src/titan/game/audio.js`
- [Generated textures](https://github.com/uniqueseaweb/reactapp/blob/main/src/titan/game/textures.js): `src/titan/game/textures.js`

### ToDo app

- [ToDo entry](https://github.com/uniqueseaweb/reactapp/blob/main/src/todo/main.jsx): `src/todo/main.jsx`
- [Task manager](https://github.com/uniqueseaweb/reactapp/blob/main/src/todo/App.jsx): `src/todo/App.jsx`

### Other components

- **Visitor**

## Connections

- Visitor → App links: opens (evidence: `README.md`)
- App links → ToDo entry: links to (evidence: `README.md`)
- App links → Solar entry: links to (evidence: `README.md`)
- App links → Game entry: links to (evidence: `README.md`)
- App links → Tournament entry: links to (evidence: `README.md`)
- Visitor → Tournament entry: opens (evidence: `README.md`)
- Tournament entry → Tournament router: renders (evidence: `src/futsal/main.jsx`)
- Tournament router → Tournament data: loads (evidence: `src/futsal/FutsalApp.jsx`)
- Tournament data → RPC client: calls (evidence: `src/futsal/hooks.js`)
- RPC client → Demo storage: uses locally (evidence: `src/futsal/api.js`)
- RPC client → Supabase RPC: calls RPC (evidence: `README.md`)
- Tournament router → Tournament creation: renders (evidence: `src/futsal/FutsalApp.jsx`)
- Tournament router → Schedule view: routes to (evidence: `src/futsal/FutsalApp.jsx`)
- Tournament router → Match details: routes to (evidence: `src/futsal/FutsalApp.jsx`)
- Tournament router → Team members: routes to (evidence: `src/futsal/FutsalApp.jsx`)
- Tournament router → Tournament admin: routes to (evidence: `src/futsal/FutsalApp.jsx`)
- Tournament router → Rankings: routes to (evidence: `src/futsal/FutsalApp.jsx`)
- Tournament admin → Schedule builder: builds preview (evidence: `src/futsal/views/AdminView.jsx`)
- Rankings → Schedule builder: calculates rankings (evidence: `src/futsal/views/RankingViews.jsx`)
- Tournament router → Form components: uses (evidence: `src/futsal/FutsalApp.jsx`)
- Tournament admin → Form components: uses forms (evidence: `src/futsal/views/AdminView.jsx`)
- Match details → Form components: uses forms (evidence: `src/futsal/views/MatchView.jsx`)
- Tournament router → Display formatting: formats dates (evidence: `src/futsal/FutsalApp.jsx`)
- Tournament entry → Viewer controls: renders
- Viewer controls → 3D scene: renders (evidence: `src/solar/SolarApp.jsx`)
- 3D scene → Body data: reads data (evidence: `src/solar/Scene.jsx`)
- 3D scene → Planet textures: generates textures (evidence: `src/solar/Scene.jsx`)
- Game entry → Game interface: renders (evidence: `src/titan/main.jsx`)
- Game interface → Game engine: creates game (evidence: `src/titan/TitanApp.jsx`)
- Game engine → Player movement: uses (evidence: `src/titan/game/Game.js`)
- Game engine → World and collisions: uses (evidence: `src/titan/game/Game.js`)
- Game engine → Titan enemy: creates (evidence: `src/titan/game/Game.js`)
- Game engine → Combat effects: uses (evidence: `src/titan/game/Game.js`)
- Game engine → Synthesized audio: uses (evidence: `src/titan/game/Game.js`)
- Game engine → Generated textures: uses (evidence: `src/titan/game/Game.js`)
- World and collisions → Generated textures: uses (evidence: `src/titan/game/world.js`)
- ToDo entry → Task manager: renders (evidence: `src/todo/main.jsx`)
- Visitor → Task manager: manages tasks (evidence: `README.md`)
