cinefam
tigawanna/cinefam
Track movies and shows, build watchlists, and share with friends.
- expo
- local-first
- tanstack
- tmdb
tigawanna/cinefam
Track movies and shows, build watchlists, and share with friends.
Cinema companion monorepo — track movies and shows, build watchlists, and share with friends.
apps/web): TanStack Start on Cloudflare Workers, Better Auth, Postgres (Hyperdrive), TMDB proxyapps/mobile): Expo SDK 56, TanStack DB + expo-sqlite persistence, manual sync gluepackages/db): Shared Drizzle Postgres schema and typesLayer | Technology | Purpose |
|---|---|---|
Live metadata | TMDB via | Posters, ratings, discover, search |
Server library | Postgres + Drizzle | Source of truth for watchlists, watched, social |
Client library | TanStack DB + SQLite | Offline-first local replica on device |
Glue | Manual REST ( | Pull snapshot, push rows — you extend as needed |
Auth | Better Auth + Postgres | Email/password and Google OAuth |
1cd cinefam2pnpm install3cp apps/web/.dev.vars.example apps/web/.dev.vars4cp apps/mobile/.env.example apps/mobile/.env
Start Postgres locally (example):
1docker run -d --name cinefam-pg -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=cinefam -p 5432:5432 postgres:16
Run migrations:
1pnpm --filter web db:generate2DATABASE_URL=postgresql://postgres:postgres@localhost:5432/cinefam pnpm --filter web db:migrate
1pnpm --filter web dev
Opens at http://localhost:3072
1pnpm --filter mobile start
Set EXPO_PUBLIC_API_URL to your web dev server.
Method | Path | Description |
|---|---|---|
GET |
| Full library pull for authenticated user |
GET |
| List watchlists |
POST |
| Create or upsert watchlist |
DELETE |
| Delete watchlist |
Mobile calls syncLibraryFromServer() in apps/mobile/src/lib/sync/library-api.ts to hydrate local TanStack DB collections.
Command | Description |
|---|---|
| Start all dev servers |
| Typecheck all packages |
| Lint + format check |
| Build and deploy web to Cloudflare |