# ssimuverse/simuverse architecture

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

- Interactive diagram: https://gitdiagram.com/ssimuverse/simuverse
- Repository: https://github.com/ssimuverse/simuverse

## Overview

This is a browser-based collection of reality-competition simulators, with separate experiences for Drag Race, Dragula, Total Drama Island, and Top Model. Users choose a simulator, configure a cast and season, then play through competition events and results. Drag Race and Dragula have substantial visible data-driven features: challenges, runway or floor-show judging, backstage events, and elimination performances. The tree and excerpts do not expose the other simulators’ internals or enough call sites to assert detailed wiring; those are represented only at their supported entry points.

Main entry points: [`drag_race/simulator.js`](https://github.com/ssimuverse/simuverse/blob/main/drag_race/simulator.js) (Season simulator), [`index.html`](https://github.com/ssimuverse/simuverse/blob/main/index.html) (Simulator directory), [`dragula/simulator.js`](https://github.com/ssimuverse/simuverse/blob/main/dragula/simulator.js) (Season simulator), [`drag_race/index.html`](https://github.com/ssimuverse/simuverse/blob/main/drag_race/index.html) (Drag Race page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Site and selection"]
  node_home["Simulator directory<br/>[index.html]"]
end

subgraph group_race["Drag Race"]
  node_race_page["Drag Race page<br/>[index.html]"]
  node_race_sim["Season simulator<br/>[simulator.js]"]
  node_cast_data["Queen roster<br/>[drag_race_data.js]"]
  node_maxi_data["Main challenges<br/>[maxi_challenges.js]"]
  node_mini_data["Mini challenges"]
  node_runway_data["Runway themes<br/>[runways_data.js]"]
  node_songs_data["Lip-sync songs"]
  node_performance_data["Performance comments"]
  node_untucked_data["Untucked events"]
end

subgraph group_horror["Dragula"]
  node_dragula_page["Dragula page<br/>[index.html]"]
  node_dragula_sim["Season simulator<br/>[simulator.js]"]
  node_floors_data["Floor shows"]
  node_fright_data["Fright feats"]
  node_extermination_data["Exterminations"]
  node_cauldron_data["Cauldron events"]
end

subgraph group_other["Other simulators"]
  node_tdi_sim["TDI simulator<br/>[simulator.js]"]
  node_model_sim["Top Model simulator<br/>[simulator.js]"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens"| node_home
node_visitor -->|"opens"| node_race_page
node_visitor -->|"opens"| node_dragula_page
node_home -->|"links to"| node_race_page
node_home -->|"links to"| node_dragula_page
node_race_page -->|"loads"| node_race_sim
node_race_sim -->|"uses roster"| node_cast_data
node_race_sim -->|"uses challenges"| node_maxi_data
node_race_sim -->|"uses challenges"| node_mini_data
node_race_sim -->|"uses themes"| node_runway_data
node_race_sim -->|"uses songs"| node_songs_data
node_race_sim -->|"uses comments"| node_performance_data
node_race_sim -->|"uses events"| node_untucked_data
node_dragula_page -->|"loads"| node_dragula_sim
node_dragula_sim -->|"uses shows"| node_floors_data
node_dragula_sim -->|"uses feats"| node_fright_data
node_dragula_sim -->|"uses challenges"| node_extermination_data
node_dragula_sim -->|"uses events"| node_cauldron_data
node_home -->|"links to"| node_tdi_sim
node_home -->|"links to"| node_model_sim

click node_home "https://github.com/ssimuverse/simuverse/blob/main/index.html"
click node_race_page "https://github.com/ssimuverse/simuverse/blob/main/drag_race/index.html"
click node_race_sim "https://github.com/ssimuverse/simuverse/blob/main/drag_race/simulator.js"
click node_cast_data "https://github.com/ssimuverse/simuverse/blob/main/drag_race_data.js"
click node_maxi_data "https://github.com/ssimuverse/simuverse/blob/main/drag_race/maxi_challenges.js"
click node_mini_data "https://github.com/ssimuverse/simuverse/blob/main/drag_race/mini_challenges_data.js"
click node_runway_data "https://github.com/ssimuverse/simuverse/blob/main/drag_race/runways_data.js"
click node_songs_data "https://github.com/ssimuverse/simuverse/blob/main/drag_race/lipsync_songs_data.js"
click node_performance_data "https://github.com/ssimuverse/simuverse/blob/main/drag_race/lipsync_performance.js"
click node_untucked_data "https://github.com/ssimuverse/simuverse/blob/main/drag_race/untucked_events_data.js"
click node_dragula_page "https://github.com/ssimuverse/simuverse/blob/main/dragula/index.html"
click node_dragula_sim "https://github.com/ssimuverse/simuverse/blob/main/dragula/simulator.js"
click node_floors_data "https://github.com/ssimuverse/simuverse/blob/main/dragula/floor_shows_data.js"
click node_fright_data "https://github.com/ssimuverse/simuverse/blob/main/dragula/fright_feats_data.js"
click node_extermination_data "https://github.com/ssimuverse/simuverse/blob/main/dragula/exterminations_data.js"
click node_cauldron_data "https://github.com/ssimuverse/simuverse/blob/main/dragula/cauldron_events_data.js"
click node_tdi_sim "https://github.com/ssimuverse/simuverse/blob/main/tdi/simulator.js"
click node_model_sim "https://github.com/ssimuverse/simuverse/blob/main/top_model/simulator.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_home toneBlue
class node_race_page,node_race_sim,node_cast_data,node_maxi_data,node_mini_data,node_runway_data,node_songs_data,node_performance_data,node_untucked_data toneAmber
class node_dragula_page,node_dragula_sim,node_floors_data,node_fright_data,node_extermination_data,node_cauldron_data toneMint
class node_tdi_sim,node_model_sim toneRose
class node_visitor toneIndigo
```

## Components

### Site and selection

- [Simulator directory](https://github.com/ssimuverse/simuverse/blob/main/index.html): `index.html`

### Drag Race

- [Drag Race page](https://github.com/ssimuverse/simuverse/blob/main/drag_race/index.html): `drag_race/index.html`
- [Season simulator](https://github.com/ssimuverse/simuverse/blob/main/drag_race/simulator.js): `drag_race/simulator.js`
- [Queen roster](https://github.com/ssimuverse/simuverse/blob/main/drag_race_data.js): `drag_race_data.js`
- [Main challenges](https://github.com/ssimuverse/simuverse/blob/main/drag_race/maxi_challenges.js): `drag_race/maxi_challenges.js`
- [Mini challenges](https://github.com/ssimuverse/simuverse/blob/main/drag_race/mini_challenges_data.js): `drag_race/mini_challenges_data.js`
- [Runway themes](https://github.com/ssimuverse/simuverse/blob/main/drag_race/runways_data.js): `drag_race/runways_data.js`
- [Lip-sync songs](https://github.com/ssimuverse/simuverse/blob/main/drag_race/lipsync_songs_data.js): `drag_race/lipsync_songs_data.js`
- [Performance comments](https://github.com/ssimuverse/simuverse/blob/main/drag_race/lipsync_performance.js): `drag_race/lipsync_performance.js`
- [Untucked events](https://github.com/ssimuverse/simuverse/blob/main/drag_race/untucked_events_data.js): `drag_race/untucked_events_data.js`

### Dragula

- [Dragula page](https://github.com/ssimuverse/simuverse/blob/main/dragula/index.html): `dragula/index.html`
- [Season simulator](https://github.com/ssimuverse/simuverse/blob/main/dragula/simulator.js): `dragula/simulator.js`
- [Floor shows](https://github.com/ssimuverse/simuverse/blob/main/dragula/floor_shows_data.js): `dragula/floor_shows_data.js`
- [Fright feats](https://github.com/ssimuverse/simuverse/blob/main/dragula/fright_feats_data.js): `dragula/fright_feats_data.js`
- [Exterminations](https://github.com/ssimuverse/simuverse/blob/main/dragula/exterminations_data.js): `dragula/exterminations_data.js`
- [Cauldron events](https://github.com/ssimuverse/simuverse/blob/main/dragula/cauldron_events_data.js): `dragula/cauldron_events_data.js`

### Other simulators

- [TDI simulator](https://github.com/ssimuverse/simuverse/blob/main/tdi/simulator.js): `tdi/simulator.js`
- [Top Model simulator](https://github.com/ssimuverse/simuverse/blob/main/top_model/simulator.js): `top_model/simulator.js`

### Other components

- **Visitor**

## Connections

- Visitor → Simulator directory: opens
- Visitor → Drag Race page: opens
- Visitor → Dragula page: opens
- Simulator directory → Drag Race page: links to
- Simulator directory → Dragula page: links to
- Drag Race page → Season simulator: loads
- Season simulator → Queen roster: uses roster
- Season simulator → Main challenges: uses challenges
- Season simulator → Mini challenges: uses challenges
- Season simulator → Runway themes: uses themes
- Season simulator → Lip-sync songs: uses songs
- Season simulator → Performance comments: uses comments
- Season simulator → Untucked events: uses events
- Dragula page → Season simulator: loads
- Season simulator → Floor shows: uses shows
- Season simulator → Fright feats: uses feats
- Season simulator → Exterminations: uses challenges
- Season simulator → Cauldron events: uses events
- Simulator directory → TDI simulator: links to
- Simulator directory → Top Model simulator: links to
