Real-Time Training Platform

Simulate the Crisis.
Train for Reality.

SIRE is an open-source, multi-user emergency training simulator that delivers live incident scenarios to trainees via WebSockets — built for instructors who need realistic, repeatable drills.

View on GitHub Quick Start
Node.js · React · Socket.IO Multi-User Sessions 20+ Scenarios MIT License

Built for Drill Realism

Everything an instructor needs to run credible, high-fidelity incident exercises.

Real-Time Event Streaming

Scenario events are pushed live over Socket.IO with configurable time offsets, keeping every participant synchronized during an exercise.

🧑‍💼

Dual-Role Architecture

Separate Instructor and Trainee views. Instructors control session flow; trainees receive and respond to unfolding incidents.

📋

Progressive Escalation

Each scenario unfolds in timed stages — from initial alert through full escalation — mirroring how real incidents develop.

🌐

Zero-Infrastructure Sessions

In-memory session store means nothing to configure. Spin up a session, share the code, and trainees join instantly from any device.

🔐

API Key Auth & Audit Logs

Optional API key enforcement, ticket ID tracking, and structured audit logging built in — ready for enterprise compliance requirements.

🚀

One-Click Deploy

Pre-configured for Railway, Render, Heroku, and Docker. Go from clone to live training environment in under five minutes.


20+ Incident Scenarios

Covering the full spectrum of real-world emergency types your organization may face.

Active Aggressor
Bomb Threat
Suspicious Person
Cardiac Event
Anaphylaxis
Overdose
Stroke
Seizure
Diabetic Emergency
Penetrating Injury
Motor Vehicle Collision
Fall Injury
Fire & Evacuation
Flood
Power Outage
Severe Weather
Hazmat Spill
+ More

How It Works

A clean client-server split, real-time events, and stateless session storage.

React Client ⟵ Socket.IO ⟶ Express + Socket.IO Server In-Memory Store
Instructor creates session → shares code
Trainees join by session code
Server streams scenario events in real time
REST API manages session lifecycle
WebSocket delivers live incident updates
No database — just run and train

Tech Stack

Modern, lightweight, and dependency-minimal.

Backend

Node.js 20+ Express 4 Socket.IO 4 NanoID Morgan CORS

Frontend

React 19 React Router 7 Material-UI 7 Vite 7

Deploy

Docker Railway Render Heroku

Quick Start

Up and running in under two minutes.

# 1. Clone the repo
git clone https://github.com/aelayette/sire-simulator.git
cd sire-simulator/backend

# 2. Install dependencies
npm install

# 3. Configure environment (optional — defaults work for local dev)
cp .env.example .env

# 4. Start the server
npm run dev
# → Server running on http://localhost:8080
# Clone and start with Docker Compose
git clone https://github.com/aelayette/sire-simulator.git
cd sire-simulator/backend

docker-compose up --build
# → API available at http://localhost:8080
# One-click deploy options in backend/README.md
# Railway  → railway.json included
# Render   → render.yaml included
# Heroku   → Procfile + app.json included

# Required environment variables:
PORT=8080
API_KEY=your-secret-key
ALLOWED_ORIGINS=https://your-frontend.com
REQUIRE_API_KEY=true

REST API

Clean endpoints for session lifecycle management — pair with any frontend or automation tool.

GET /health

Server status, uptime, and version info.

POST /sessions

Create a new training session and receive a shareable session code.

GET /sessions/:code

Retrieve full session state including scenario and participants.

POST /sessions/:code/join

Join an existing session as a trainee.

POST /sessions/:code/start

Instructor starts the scenario — events begin streaming.

DELETE /sessions/:code

Terminate and clean up a session.