Files
whattoplay/CLAUDE.md

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 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/.

bun run db:generate
bun run db:migrate