Getting Started
Source of truth:
d3chat/README.mdd3chat/backend/app/main.pyd3chat/docker-compose*.yml
Prerequisites
- Docker + Docker Compose (recommended path)
- Node.js 20+ (frontend local dev)
- Python 3.12+ (backend local dev)
- PostgreSQL 16 and Redis 7 (if not using Docker for infra)
Fastest Local Startup (Docker)
git clone https://github.com/matdemers1/d3chat.gitcd d3chatcp .env.example .env# Set SECRET_KEY and other values in .env
docker compose up --buildAfter startup:
- Frontend:
http://localhost:3000 - API docs:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc - Health:
http://localhost:8000/health
First Login and Admin Access
On first backend startup, if no local superadmin exists, d3chat creates:
- Username:
admin - Password:
Change_Me_123 - Role:
superadmin
Immediately change this password after first login.
You can change password via:
- UI profile settings, or
POST /api/v1/users/me/password
Split Dev Workflow (No Full Docker)
Use Docker only for infra and run backend/frontend directly.
1. Start PostgreSQL + Redis
docker compose -f docker-compose.infra.yml up -d2. Start backend
cd backendpython -m venv .venvsource .venv/bin/activatepip install -e ".[dev]"alembic upgrade headuvicorn app.main:app --reload3. Start frontend
cd frontendnpm installnpm run devRequired Environment Variables
Minimum values to set in .env:
SECRET_KEYDATABASE_URLREDIS_URLSERVER_DOMAINVITE_API_URLVITE_WS_URL
For federation in non-local environments:
SIGNING_KEY_SEED(optional but recommended)API_BASE_URL
Smoke Test Checklist
- Register a user via UI or
POST /api/v1/auth/register. - Log in and confirm chat UI loads.
- Create a channel and send a message.
- Open second browser session and confirm real-time delivery.
- Visit admin routes as superadmin and verify dashboard loads.