1.7 KiB
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 v4apps/discord-bot— discord.js slash-command botpackages/contracts— shared Zod contracts and CloudEvents typespackages/database— PostgreSQL Drizzle schema and versioned migrationsplugins/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-adminrole - Admin-managed Discord guild configuration
- discord.js bot with
/registerand/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.