1.2 KiB
1.2 KiB
movie-select — Collaborative Movie Picker
Collaborative movie selection app where groups vote on movies to watch together.
Stack
- Frontend: React 19, Vite, Tailwind CSS 4, TanStack Router, TanStack Query
- Backend: Hono (Bun), Drizzle ORM, PostgreSQL
- Linting: Biome 2.x (tabs, 80 chars, double quotes)
Project Structure
src/
├── client/ ← React SPA (routes/, components/, hooks/, lib/)
├── server/ ← Hono API (features/, shared/)
└── shared/ ← isomorphic code (types, algorithms)
Local Development
bun install
bun run dev # frontend (Vite)
bun run dev:server # backend (Bun --watch)
Deployment
./deploy.sh
Deploys to Uberspace (serve.uber.space):
- Frontend →
/var/www/virtual/serve/html/movie-select/ - Backend →
~/services/movie-select/(systemd:movie-select.service, port 3003) - Route:
/movie-select/api/*→ port 3003 (prefix removed)
Environment Variables
See .env.example:
DATABASE_URL— PostgreSQL connection stringPORT— server port (default 3003)
Database
PostgreSQL via Drizzle ORM. Migrations in drizzle/.
bun run db:generate
bun run db:migrate