# whattoplay — Game Discovery App Game recommendation and collection management tool with Steam/GOG integration and IGDB metadata. ## Stack - **Frontend:** React 19, Vite, Tailwind CSS 4, TanStack Router (file-based), Zustand, PGlite - **Backend:** Hono (Bun), Drizzle ORM, PostgreSQL, Twitch/IGDB API - **Linting:** Biome (tabs, 80 chars, double quotes) ## Project Structure ``` src/ ├── client/ ← React PWA (features/, routes/, shared/) ├── server/ ← Hono API (features/, shared/) └── shared/ ← isomorphic code ``` ## Local Development ```bash bun install bun run dev # frontend (Vite) bun run dev:server # backend (Bun --watch) bun run dev:all # both ``` ## Deployment ```bash mise run deploy ``` Deploys to Uberspace (`serve.uber.space`): - Frontend → `/var/www/virtual/serve/html/whattoplay/` - Backend → `~/services/whattoplay/` (systemd: `whattoplay.service`, port 3001) - Route: `/whattoplay/api/*` → port 3001 (prefix removed) ## Environment Variables See `.env.example`: - `DATABASE_URL` — PostgreSQL connection string - `PORT` — server port (default 3001) - `ALLOWED_ORIGIN` — CORS origin - `TWITCH_CLIENT_ID`, `TWITCH_CLIENT_SECRET` — Twitch API credentials (for IGDB) ## Database PostgreSQL via Drizzle ORM. Migrations in `drizzle/`. ```bash bun run db:generate bun run db:migrate ```