Blert is a PvM tracking and analytics platform for Old School RuneScape, supporting Theatre of Blood, Colosseum, Inferno, and more.
This repository contains the codebase for the Blert website and backend services.
blert/
├── web/ # Frontend web app
├── socket-server/ # WebSocket event server
├── challenge-server/ # Processing and challenge handling
├── blertbank/ # Blertcoin accounts and ledger
├── common/ # Shared utilities and modules
└── compose.yaml # Local development stack
Follow these steps to get a full Blert development environment running.
docker compose upThis runs the websocket server, challenge server, database, and Redis containers.
You can either import sample data or initialize a fresh schema.
If you have a sample dump (e.g. blert-sample-data.zip):
-
Place the
.datadirectory into the root of your Blert repository. -
Import the SQL dump:
psql 'postgres://blert:blert@localhost:5433/blert' -f blert-dump.sql
This loads a prebuilt dataset containing recorded ToB raid entries and a test user.
If you don’t have a dump, you can create a new empty schema with:
export BLERT_DATABASE_URI='postgres://blert:blert@localhost:5433/blert'
npm run -w common migration:runInstall Node v24.8.0 using nvm:
nvm install 24.8.0
nvm usenpm install
npm run -w common build
npm run -w socket-server build
npm run -w challenge-server buildA default environment file, web/.env.development, is included in the
repository for local Docker-based development.
BLERT_DATABASE_URI=postgres://blert:blert@localhost:5433/blert
BLERT_REDIS_URI=redis://localhost:6379
AUTH_SECRET=blertThere are two extra environment variables needed by the web app, pointing to directories in your filesystem.
If you imported a data dump, these directories should already exist. Otherwise,
create .data/challenges and .data/web in the root of your Blert repository.
Create web/.env.local and specify:
BLERT_DATA_REPOSITORY=file:///path/to/blert/web/.data/challenges
BLERT_WEB_REPOSITORY=file:///path/to/blert/web/.data/webIn a separate terminal, run:
nvm use
npm run -w web devVisit http://localhost:3000 to verify the frontend is running.
Once the site is running, open it in your browser and register a new account. This creates a user in your local database.
If you want to record and submit your own data using a local Blert plugin:
-
Allow API key creation
In a
psqlshell connected to your local DB:UPDATE users SET can_create_api_key = true WHERE username = '<your username>';
-
Generate an API key
Visit http://localhost:3000/settings while logged in and create a new API key.
-
Connect your Blert plugin
Paste the API key into your local Blert plugin and start recording. Your data will stream into your local instance.
The root of this repository includes a Docker compose file for running the backend services required by Blert.
docker compose upThis starts the following services:
- Websocket server —
ws://localhost:3003 - Challenge processing server —
http://localhost:3009 - Blertbank —
http://localhost:3013 - Postgres —
localhost:5433 - Redis —
localhost:6379
The web frontend is run separately.
You can run tests each service's test from the root via the test command in
the service's workspace:
npm run -w challenge-server testThis project is licensed under the MIT License.