KRT-Leadtool is a web-based command and control tool for Star Citizen operations. It provides a shared mission workspace with a 3D map, real-time updates, mission planning, tasking, contact tracking, and role-based collaboration.
- Create private or public missions
- Join by code or public join
- Manage members and mission roles (gesamtlead, gruppenlead, teamlead)
- Shared map with unit, contact, task, waypoint, and navigation overlays
- Live position updates via WebSocket
- Focus/select workflows for fast situational awareness
- Manage units (ships/vehicles) and persons
- Track status, ROE, assignment, group membership, and resources
- Keep history entries and undo recent tracked changes
- Create operations with phase management
- Track operation notes and ROE overrides
- Create and assign tasks to units/groups
- SPOTREP/contact management with IFF + threat metadata
- Quick message flow with status automation hooks
- Event log timeline with CSV export
- Mission bookmarks with shared/private visibility
- Navigation data APIs (systems, points, route planning, reseed/reset)
- Frontend uses IndexedDB cache and service worker
- Delta sync endpoint for reconnect scenarios
- Frontend: React 18, Vite 5, Tailwind CSS, Three.js (react-three/fiber + drei), Zustand
- Backend: Node.js 20, Express 4, Socket.IO 4
- Data: PostgreSQL 16 + PostGIS, Valkey 8
- Auth: Discord OAuth2 (Passport) + JWT cookie session
- Infra: Docker Compose, Nginx reverse proxy, Certbot container
- Docker Engine + Docker Compose plugin
- A Discord application (OAuth2 client)
- A domain pointing to your server (for HTTPS)
git clone https://github.com/davidertl/KRT-leadtool.git
cd KRT-leadtool
cp example.env .envEdit .env and set at minimum:
APP_URLDOMAINCERTBOT_EMAILDISCORD_CLIENT_IDDISCORD_CLIENT_SECRETDISCORD_CALLBACK_URLJWT_SECRETSESSION_SECRETPOSTGRES_PASSWORDVALKEY_PASSWORD
docker compose up -d --builddocker compose ps
curl -fsS http://localhost/api/health || curl -fsS http://localhost:3000/api/healthNotes:
- On first boot, PostgreSQL initializes schema and Stanton seed data from
postgres/init.sqlandpostgres/seed_stanton.sql. - Nginx starts in HTTP-only mode if no certificate exists yet, then serves SSL mode after Certbot obtains certs and Nginx restarts.
cd backend
npm install
npm run devcd frontend
npm install
npm run devLocal dev requirements:
- Running PostgreSQL + Valkey instances
- Environment variables configured for backend (
backend/src/index.jsloads.env)
If you need a clean database volume:
docker compose down
docker volume rm krt-leadtool_postgres-data
docker compose up -dMounted route groups in backend include:
/api/auth/api/missions/api/members/api/units/api/groups/api/contacts/api/tasks/api/messages/api/events/api/operations/api/operation-phases/api/operation-roe/api/operation-notes/api/navigation/api/bookmarks/api/waypoints/api/history/api/sync/api/ship-images/api/health
backend/ Express API, auth, routes, socket, DB adapters
frontend/ React app, map UI, stores, panels, offline cache
nginx/ Reverse proxy templates and entrypoint
postgres/ SQL init + seed data
scripts/ Setup/backup helper scripts
localdoc/ Internal docs and audits
- Core functionality is implemented and actively used in development.
- Security hardening and permission tightening are in progress (see
localdoc/codex_audit.md). - Automated e2e coverage is not present yet.
Apache 2.0 — see LICENSE.