# Nexumi

Nexumi is a public Discord bot with dashboard architecture, built as a TypeScript monorepo.

## Phase 1 scope

- Monorepo foundation with `apps/bot` and `packages/shared`
- PostgreSQL + Redis compose stack
- Prisma core schema (`Guild`, `GuildSettings`, `User`, `Case`) plus moderation tables (`Warning`, `ModNote`)
- Command and module framework for slash command routing
- Permission layer and i18n starter (`de` + `en`)
- BullMQ integration for persistent moderation jobs (temp-ban expiration)
- Complete moderation reference command set for Phase 1

## Quickstart

1. Copy `.env.example` to `.env` and fill required values.
2. Install dependencies:
   - `pnpm install`
3. Generate Prisma client:
   - `pnpm prisma:generate`
4. Apply database migrations:
   - `pnpm prisma:migrate`
5. Start stack:
   - `docker compose up -d`
6. Start bot locally:
   - `pnpm --filter @nexumi/bot dev`

## Verification commands

- `pnpm typecheck`
- `pnpm lint`
- `pnpm test`

## Database

See `docs/DATABASE.md` for migrations, backup and restore runbooks.

## Backup and restore note

Phase 1 includes the BullMQ foundation for scheduled jobs. Database backup rotation is configured via `BACKUP_RETENTION_DAYS` and the `backups` volume is already reserved in compose.

Restore flow (manual, PostgreSQL container):

1. Stop bot/web services.
2. Copy dump into postgres container.
3. Run `psql` restore against `nexumi` database:
   - `docker compose exec -T postgres psql -U nexumi -d nexumi < /path/to/backup.sql`
4. Start services again.
