Catlg
in-progressA full-stack TypeScript media catalog with library, menus, social features, recommendations, auth, jobs, and tests.
Overview
Catlg brings everything you watch, read, play, and listen to into one place. You catalog your media, publish curated “menus” that others can fork, and get recommendations on what to take in next. Think Letterboxd, but across mediums.
What it does
- A unified library for tracking media across types (films, TV, books, games, music)
- Authoring, publishing, forking, and commenting on curated “menus”
- A social layer: follows, profiles, comments, and a discovery feed
- Cross-medium recommendations that start simple and explainable rather than opaque
How it’s built
- A pnpm + Turborepo monorepo. The web app is Vite + React with TanStack Router/Query and real product routes; the API is Fastify with a generated OpenAPI contract.
- PostgreSQL with SQL migrations and deterministic seed data, plus a pg-boss job worker for background work.
- API-owned auth via emailed verification codes and HTTP-only session cookies.
- A full test pyramid from the start: unit, integration, contract, and Playwright smoke tests, plus Dokku staging/prod deployment docs and scripts.
Status
Early product. The monorepo, typed API with OpenAPI, database and migrations, worker runtime, auth, and test harness all work today. Library tracking, collections/menus, follows, comments, feed, and explainable recommendations are implemented in early form and being hardened. The worker runtime exists, though worker-specific tests are not configured yet. Demo at catlg.app.