An interactive multiplayer business simulation game where participants role-play as hospital emergency directors during a crisis, making strategic investment decisions to optimize healthcare operations.
Built for Softtek Discovery workshop events.
- Welcome — Players enter their name and join an event
- Strategy — Choose 2 of 5 strategic objectives (scored at 2x weight)
- Decisions — Allocate a 10,000 credit budget across 15 decision cards in 3 categories:
- 🤖 AI Technology — High accuracy/efficiency, slow to implement
- 🔄 Processes — Balanced impact across all metrics
- 👥 Patient Experience — High NPS, fast to implement
- Results — See your score, charts, strategic analysis, and live leaderboard
| Metric | Description |
|---|---|
| NPS | Patient Satisfaction |
| Burnout | Staff Wellbeing |
| Efficiency | Operational Optimization |
| Accuracy | Medical Precision |
| Go-to-Market | Implementation Speed |
public/ ← Frontend (Azure Static Web Apps)
├── index.html ← Minimal shell
├── admin.html ← Admin panel (event management)
├── css/styles.css ← All styles
├── js/
│ ├── app.js ← Main orchestrator (state, navigation, game flow)
│ ├── api.js ← API layer (events + players, scoped by eventId)
│ ├── data.js ← Constants (decisions, metrics, helpers)
│ └── views/
│ ├── welcome.js ← Welcome screen
│ ├── objectives.js ← Strategy selection
│ ├── game.js ← Decision cards + budget tracking
│ ├── results.js ← Charts, ranking, Excel export
│ ├── admin.js ← Admin view (legacy, used by in-event admin)
│ └── docs.js ← Decision guide modal
api/ ← Backend (Azure Functions, Node.js)
├── events/ ← Events CRUD API
│ ├── function.json
│ └── index.js
├── players/ ← Players API (scoped by event)
│ ├── function.json
│ └── index.js
├── host.json
└── package.json
Each event is fully isolated with its own players and leaderboard:
- Events stored in Azure Table Storage (
eventstable) - Players stored with
eventIdaspartitionKey(playerstable) - URL routing:
/?event=colombia-mar-2026→ specific event - Admin panel:
/admin.html→ create/manage events
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/events?id=xxx |
Get event config |
GET |
/api/events |
List all events |
POST |
/api/events |
Create event |
GET |
/api/players?event=xxx |
Get players for event |
POST |
/api/players?event=xxx |
Save player result |
DELETE |
/api/players?event=xxx |
Reset event players |
- Node.js 18+
- Azure Functions Core Tools v4
- SWA CLI
-
Clone the repo:
git clone https://github.com/Softtek-Innovation-Lab/simgame-healthcare.git cd simgame-healthcare -
Install API dependencies:
cd api && npm install && cd ..
-
Create
api/local.settings.json:{ "IsEncrypted": false, "Values": { "FUNCTIONS_WORKER_RUNTIME": "node", "AzureWebJobsStorage": "UseDevelopmentStorage=true", "AZURE_STORAGE_CONNECTION_STRING": "<your-azure-storage-connection-string>" }, "Host": { "CORS": "*" } } -
Run locally:
swa start public --api-location api
-
Open
http://localhost:4280/?event=your-event-id
Via the admin panel:
- Go to
http://localhost:4280/admin.html - Enter the admin code
- Fill in event ID + name → Create
Or via curl:
curl -X POST http://localhost:4280/api/events \
-H "Content-Type: application/json" \
-d '{"eventId":"my-event","title":"EXECUTIVE DECISION SIMULATION","subtitle":"Your subtitle","eventName":"Event Name - Date","adminUsername":"yourusername","adminDisplayName":"YourName"}'Deployed as an Azure Static Web App. Push to master triggers the GitHub Actions workflow.
- Frontend: Vanilla HTML/CSS/JS (ES Modules), Chart.js, SheetJS
- Backend: Azure Functions (Node.js)
- Storage: Azure Table Storage
- Hosting: Azure Static Web Apps
- Fonts: Orbitron + JetBrains Mono