# Mixmaker Mixmaker is a full-stack application for organizing Overwatch community scrims: Discord authentication, role ratings and preferences, RU/EN UI, event RSVP, preference-aware balanced 1/2/2 teams, captain assignment, Bo3 drafts and results, and a single-elimination bracket. ## Stack - Go backend with Clean Architecture - PostgreSQL - React, TypeScript, Vite, TanStack Query and Router - REST + Server-Sent Events - Docker Compose for local PostgreSQL and Coolify production deployment ## Local development Requirements: Go, Node.js/npm, Docker with Compose. ```bash cp .env.example .env make dev-db make migrate # Terminal 1 make backend # Terminal 2 make frontend ``` The frontend runs at `http://localhost:5173`; API requests are proxied to the backend. To use the real API locally, copy `frontend/.env.example` to `frontend/.env` and set `VITE_DEMO_MODE=false`. Create a Discord application, add the callback URL from `DISCORD_REDIRECT_URL`, and fill in `DISCORD_CLIENT_ID`, `DISCORD_CLIENT_SECRET`, and `ADMIN_DISCORD_IDS`. ## Checks ```bash make test make lint make compose-check ``` ## Production The root `compose.yaml` is designed for a single Coolify Docker Compose resource. Coolify owns routing and networking; the file intentionally does not declare custom networks or publish PostgreSQL. See [deployments/coolify.md](deployments/coolify.md) for setup, secrets, storage, and backup requirements. ## Product documentation Current decisions and domain rules live in [`memory_bank/`](memory_bank/).