Software suite for DMX lighting, narrowcasting, and music integration
Aurora is the software suite that integrates and synchronizes DMX lighting, narrowcasting screens, and currently playing music — developed by and for Study Association GEWIS.
The system is built around a publish-subscribe architecture. The core serves as the central hub: it receives commands and state changes, and pushes them in real time to all connected subscribers over SocketIO WebSockets. End users control Aurora through the backoffice web interface, which communicates with the core over HTTP.
┌─────────────┐ HTTP ┌──────────────┐ SocketIO ┌─────────────────────┐
│ Backoffice │ ──────▶ │ │ ──────────▶ │ Narrowcasting Screen│
│ (web UI) │ │ Aurora Core │ └─────────────────────┘
└─────────────┘ │ │ SocketIO ┌─────────────────────┐
│ (publisher) │ ──────────▶ │ Audio Player │
┌─────────────┐ HTTP │ │ └─────────────────────┘
│ Beat │ ──────▶ │ │ SocketIO ┌─────────────────────┐
│ Detector │ │ │ ──────────▶ │ DMX Lights Proxy │
└─────────────┘ └──────────────┘ └─────────────────────┘
│
SocketIO
│
┌───────▼────────┐
│ Lights │
│ Simulator │
└────────────────┘
All subscribers authenticate with an API key, then maintain a persistent SocketIO connection to receive real-time commands. Subscribers may additionally fetch data from the core over HTTP as needed.
| Repository | Role | Tech |
|---|---|---|
aurora-core (this repo) |
Central publisher — receives commands and pushes state to all subscribers | TypeScript, NodeJS, SocketIO |
aurora-backoffice (this repo) |
Web management UI for humans to control Aurora | TypeScript, Vue, PrimeVue |
aurora-client (this repo) |
Narrowcasting screen client — displays posters and information on screens | TypeScript, NodeJS, SocketIO |
| aurora-audio-player | Audio subscriber — plays music as commanded by the core | TypeScript, NodeJS |
| aurora-lights-proxy | DMX controller bridge — forwards DMX packets from core to ArtNet hardware | Python, Art-Net |
| aurora-lights-simulator | Lights effect development tool — simulate DMX output without physical hardware | TypeScript, NodeJS |
| aurora-beat-detector | Real-time beat detection — sends beat events to core so lights sync to music automatically | TypeScript, NodeJS |
- Node.js 22+ — Download
- pnpm — Install (enabled via
corepack enableon Node.js 16.13+) - Git — Download
This repository contains the Aurora Core. For development setup of the core itself, see apps/aurora-core/README.md.
# Clone the repository
git clone https://github.com/GEWIS/aurora-core.git
cd aurora-core
# Install all dependencies (monorepo)
pnpm install
# Set up environment
cp apps/aurora-core/.env.example apps/aurora-core/.env
# Start developing
cd apps/aurora-core && pnpm devThe monorepo includes a one-command Docker Compose setup that runs the core, backoffice, client (narrowcasting), and their dependencies together.
- Docker with Compose V2 (included in Docker Desktop / Docker Engine 25+)
- Node.js 22+ with pnpm (for the dev scripts only)
# Start everything
pnpm devThis will:
- Start the core (
http://localhost:3000) with a pre-seeded SQLite database (GEWIS data set) - Start the backoffice (
http://localhost:8080) - Start the client (
http://localhost:8081) with Vite dev server proxying API calls to the core - Wait for the core to be ready and the database seeded
- Extract the first screen's API key from the database
- Open the client, backoffice, and API docs in your browser
- Stay running in the foreground — press Ctrl-C to stop the environment gracefully
docker compose downContainers are removed but the node_modules volume is kept for fast restarts. To fully reset:
docker compose down -v # also removes cached node_modulesAurora Core integrates with several external services for extended functionality:
| Service | Purpose | Required Env |
|---|---|---|
| Spotify | Currently playing track display | SPOTIFY_* |
| Trello | Poster content management for narrowcasting | TRELLO_* |
| NS | Train departure information on narrowcasting posters | NS_API_KEY |
| SudoSOS | Borrel (event) poster generation | SUDOSOS_API_URL |
If you want to integrate your own service with Aurora — to fetch data, send commands, or build a custom subscriber — see the Integrations README in the core for detailed documentation on authentication and the available endpoints.
- Fork the repository.
- Create a feature branch:
git checkout -b feat/your-feature-name. - Make your changes.
- Run tests:
pnpm --filter @gewis/aurora-core test. - Run linting:
pnpm lint. - Commit using Conventional Commits:
git commit -m "feat: add your feature". - Push:
git push origin feat/your-feature-name. - Open a Pull Request.
Copyright © 2023-2025 Study Association GEWIS — Some rights reserved.
Aurora is licensed under the GNU Affero General Public License v3.0 or later. See the LICENSE file for details.