StarBuddy

A self-hostable companion platform for Star Citizen communities: track your org’s resources (with quality), blueprints, and refining orders — then ask it what your org can craft right now, what it’s closest to being able to craft, and who holds the blueprint and best materials for the item you need.

Status: specification / pre-alpha. Read the full project specification at ulrichdahl.github.io/StarBuddy/spec.html (source: spec.html).

What it does

Languages

The web app, desktop client and Discord bot are localized — English (default) and Danish. The browser’s language is used on first login and the member can change it any time (remembered on the profile); the bot follows that choice, or the Discord client’s language for unregistered users. Each language is one JSON file (frontend/src/locales/, client/src/locales/, bot/locales/) — copy en.json to add a language. Game data (item, material, blueprint and location names) is never translated.

Hosting model

One deployment serves one community: the instance is bound to a single Discord server and only its members can join; multiple orgs can live inside one instance. Other communities run their own instance (Docker Compose) with their own Discord application and bot.

Stack

Laravel + PostgreSQL backend (backend/) · React (MUI) SPA (frontend/) · Node discord.js bot (bot/) · Tauri v2 desktop client (client/, Rust log scanner) · Docker Compose deployment · Caddy in front.

Desktop client downloads

The desktop client (Game.log watcher) is built automatically for Windows and Linux:

Screen reading (refinery orders, scanning) captures the game window as a video stream, so it needs Windows 10 (build 1903) or newer, or a Linux desktop with xdg-desktop-portal and PipeWire — Wayland or X11, GNOME, KDE, Hyprland, Sway. The AppImage is built on Ubuntu 24.04, so it wants glibc 2.39 or newer; the .deb and .rpm say what they need.

Branches

develop is the branch work lands on; feature branches merge into it, and every change to the client there refreshes the development build above.

main is what the live instance runs. The server redeploys on any push to it, so merging develop into main is the release, and a v0.1.12 tag on the merge builds the desktop installers to match.

Running your own instance

Full operator guide: HOSTING.md — production setup behind an SSL proxy, backups, cron auto-updates, troubleshooting. The quickstart below covers local/evaluation use.

Prerequisites: Docker with Compose, and a Discord application for your community (OAuth2 redirect <your-url>/api/auth/discord/callback, plus a bot invited to your server).

git clone https://github.com/ulrichdahl/StarBuddy.git && cd StarBuddy
cp .env.example .env        # fill in Discord credentials, guild id, DB password,
                            # and APP_KEY (echo "base64:$(openssl rand -base64 32)")
docker compose up -d --build   # local: Caddy on http://localhost:8080 with the Vite dev server (hot reload) behind it
docker compose exec app php artisan migrate --seed --force
docker compose run --rm bot node dist/register-commands.js   # register slash commands

If the default port 8080 is taken, change HTTP_PORT — and keep APP_URL, DISCORD_REDIRECT_URI, SANCTUM_STATEFUL_DOMAINS, and the redirect URL in the Discord developer portal in sync with it.

Production (behind your own SSL proxy)

docker-compose.yml alone is production: it publishes no ports and attaches the web container to your reverse proxy’s external Docker network:

docker network create proxy        # once, or reuse your proxy's network
docker compose -f docker-compose.yml up -d

Point your nginx/SSL proxy at http://starbuddy-web:80 on that network, and set APP_URL, DISCORD_REDIRECT_URI, SESSION_DOMAIN, and SANCTUM_STATEFUL_DOMAINS in .env to your public https domain.

Persistent data is the database and the nightly dumps (kept 14 days) — Docker named volumes by default; add -f docker-compose.hostdata.yml to keep them as plain directories under STARBUDDY_DATA_DIR (see HOSTING.md). Point it at an absolute path on servers and include it in your backups.

Open http://localhost:8080 (or your APP_URL) and sign in with Discord. Only members of the configured STARBUDDY_HOME_GUILD_ID can join. Nightly database dumps land in ./backups/.

Fair play

StarBuddy never injects into the game, reads game memory, automates inputs, or scrapes RSI. It reads the Game.log text file, and — only while you switch screen reading on — the game window you picked, through the same desktop screen-sharing your system offers any video call. Frames are read and dropped; nothing leaves the machine unless you send it.

License

AGPL-3.0-or-later. You are free to run, study, modify, and share this software — but if you host a modified version, you must make your modified source available to its users.

Credits

StarBuddy is a United Danes community project, built by DK-Raven with Claude.ai.

Fan project notice

This is an unofficial Star Citizen fan project, not affiliated with the Cloud Imperium group of companies. All content not authored by its host or users is property of its respective owners. Star Citizen®, Roberts Space Industries® and Cloud Imperium® are registered trademarks of Cloud Imperium Rights LLC. The “Made by the Community” logo is used under the Star Citizen Fan Kit terms — it may only be resized, never altered. Official site: https://robertsspaceindustries.com/.