Files
minecraft-account-manager/README.md
T

1.7 KiB

Minecraft Account Manager

A Discord-first account registry for a private Java Edition Minecraft network. Players link Discord to one or more Minecraft accounts, while a fail-closed Velocity plugin admits only registered accounts.

Workspace layout

  • apps/web — Next.js 16 web application and API, styled with Tailwind CSS v4
  • apps/discord-bot — discord.js slash-command bot
  • packages/contracts — shared Zod contracts and CloudEvents types
  • packages/database — PostgreSQL Drizzle schema and versioned migrations
  • plugins/velocity — Velocity admission plugin (planned)

Requirements

  • Node.js 22+
  • npm 11+
  • Docker with Compose, or PostgreSQL 17+

Local setup

cp .env.example .env.local
docker compose up -d postgres
npm install
npm run db:migrate
npm run dev

Open http://localhost:3000.

Validation

npm test
npm run typecheck
npm run lint
npm run build

Database workflow

Always create and apply versioned migrations:

npm run db:generate
npm run db:migrate

Do not use drizzle push; it bypasses the reviewed migration history and can cause destructive schema changes.

Confirmed product decisions

  • PostgreSQL and Drizzle ORM
  • Keycloak OIDC for admin access with the minecraft-account-manager-admin role
  • Admin-managed Discord guild configuration
  • discord.js bot with /register and /account
  • Java Edition online-mode accounts only
  • Velocity admission checks are fail closed
  • VPN detection is represented in the schema but may remain disabled in the first release until a provider is selected

See docs/architecture.md for trust boundaries and service responsibilities.