- Documentation hub:
docs/README.md - Current roadmap:
docs/ROADMAP.md - AI-agent-oriented guide:
docs/AI_AGENT_GUIDE.md - End-to-end architecture:
docs/ARCHITECTURE.md - Backend reference (REST + WS + services):
docs/BACKEND_REFERENCE.md - Frontend reference (state + components + flows):
docs/FRONTEND_REFERENCE.md - Integration examples (REST + WS + voice snippets):
docs/INTEGRATION_EXAMPLES.md - Data model reference:
docs/DATA_MODEL.md - Analytics reference:
docs/ANALYTICS.md - Operations and troubleshooting:
docs/OPERATIONS.md - Full file map:
docs/FILE_MAP.md - API quick reference:
docs/API.md - Setup quick reference:
docs/SETUP.md
backend/: Fastify REST API, WebSocket gateway, Prisma persistence, analytics ingestion, and optional SFU support.web/: React SPA with optimistic message handling, polling fallback, and mesh/SFU voice orchestration.backend/prisma/schema.prisma: source of truth for users, servers, channels, messages, receipts, invites, moderation, and analytics.docs/: canonical technical documentation plus static docs UI assets.
npm install
npm --workspace backend exec prisma db push
npm --workspace backend run prisma:seed
npm run devFrontend: http://localhost:5173
Backend: http://localhost:4000
PowerShell env bootstrap:
Copy-Item backend\.env.example backend\.env
Copy-Item web\.env.example web\.envTest commands:
npm testruns backend tests.npm --workspace web run testruns frontend tests.
Local development defaults worth knowing:
- Prisma is configured for PostgreSQL, so
DATABASE_URLmust be a PostgreSQL DSN. prisma:seedcreates or upgrades the owner accountmax@staneker.com/max123456.
Example WebSocket auth payload:
{ "type": "auth", "payload": { "token": "<jwt>" } }Example voice join payload:
{
"type": "voice:join",
"payload": {
"channelId": "<voice-channel-id>",
"requestId": "join-1",
"muted": false,
"deafened": false
}
}- Backend: Fastify, TypeScript, Prisma
- Frontend: React, TypeScript, Vite
- Testing: Vitest (backend and web workspaces)
