Skip to content

Guild ​

Guild is a multi-game community manager for guilds, clans, legions, and teams. It uses an isolated PostgreSQL database and Better Auth on the Finluth host. The browser talks only to the Guild API; database credentials never enter the client bundle.

Live at guild.finluth.com.

Run the interactive demo ​

sh
npm install
npm run demo

Demo data and edits stay in this browser's local storage. They are not shared accounts or production data.

Run live mode locally ​

  1. Copy .env.example to .env. Set DATABASE_URL to a local PostgreSQL database, generate a random BETTER_AUTH_SECRET with at least 32 characters, and set APP_URL=http://localhost:5173.
  2. Start PostgreSQL. For a disposable local database, run docker compose -f deploy/docker-compose.dev.yml up -d.
  3. Run npm install and npm run dev. The API applies migrations from server/migrations on startup; Vite proxies /api to it.

SMTP values are optional in development (verification/reset links are printed to the API terminal) and required in production. Email verification is required before sign-in.

Plans ​

Free accounts can own one community; they may still join other communities. Pro accounts can own unlimited communities. The API enforces the limit. Until a billing provider is selected, an operator can grant or expire Pro entitlements by updating user_plans in the Guild database.

Finluth deployment ​

Finluth's Caddy and Docker Compose use the shared deploy_default network. Guild has its own database and application service on that network. After cloning under /opt/guild/app and configuring .env.production:

sh
git pull && sh deploy/deploy.sh

Caddy site:

text
guild.finluth.com {
    reverse_proxy guild:3000
}

Do not share or reuse Finluth's application database credentials for Guild.

Current scope ​

  • Multiple communities per account, across games and servers
  • Owner/officer/member roles enforced by the server API
  • Free plan with one owned community and Pro entitlement with unlimited owned communities
  • Member roster, expiring invite links, events, RSVPs, attendance, and announcements
  • Reusable templates, custom roster naming, crests, and per-community visual designs
  • Email/password and Discord sign-in, linked Discord accounts, verification, password recovery, and account deletion
  • Per-community Discord server/channel selection and announcement posting
  • Responsive dashboard and browser-persistent demo mode

Private operations documentation for the Finluth workspace.