1.4 KiB
1.4 KiB
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
bun install
bun run dev # frontend (Vite)
bun run dev:server # backend (Bun --watch)
bun run dev:all # both
Deployment
./deploy.sh
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 stringPORT— server port (default 3001)ALLOWED_ORIGIN— CORS originTWITCH_CLIENT_ID,TWITCH_CLIENT_SECRET— Twitch API credentials (for IGDB)
Database
PostgreSQL via Drizzle ORM. Migrations in drizzle/.
bun run db:generate
bun run db:migrate