62 lines
1.7 KiB
Markdown
62 lines
1.7 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
cp .env.example .env.local
|
|
docker compose up -d postgres
|
|
npm install
|
|
npm run db:migrate
|
|
npm run dev
|
|
```
|
|
|
|
Open `http://localhost:3000`.
|
|
|
|
## Validation
|
|
|
|
```bash
|
|
npm test
|
|
npm run typecheck
|
|
npm run lint
|
|
npm run build
|
|
```
|
|
|
|
## Database workflow
|
|
|
|
Always create and apply versioned migrations:
|
|
|
|
```bash
|
|
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`](docs/architecture.md) for trust boundaries and service responsibilities.
|