Problem: YouTube search for tango performances is inefficient. Results are buried due to YouTube's algorithmic sorting and inconsistent metadata.
Solution: Tango Video Search provides a streamlined interface to filter by dancers, orchestra, song, singer, event, year, or YouTube channel with minimal friction.
How it works: It’s powered by an LLM-curated index built from YouTube metadata. That means faster, more accurate retrieval of the performances you're looking for.
- Filter videos by dancer combinations and orchestras
- Refine results by song, singer, event, year, or YouTube channel
- Responsive video grid layout
- Quick filtering through video cards
- Video metadata display
- Framework: React Router v8 (started as a Remix project)
- UI: Tailwind CSS + Radix Icons
- Database: Cloudflare D1 with Drizzle ORM
- Runtime: Cloudflare Workers
- Tooling: Vite+ through the
vpCLI
Requires Node.js 24.11 or newer and the Vite+ vp CLI. Database update commands
also require the sqlite3 CLI.
Install dependencies:
vp install --frozen-lockfileLoad the latest local SQLite snapshot into local D1:
vp run db:update --local --resetRun the React Router development server:
vp run devRun the built Worker locally through Wrangler:
vp run previewNote
The database is not included in the repository.
The application reads from a D1 binding named DB. Local data updates are
generated from the newest data/sqlite-YYYY-MM-DD.db snapshot. The schema
includes:
- Videos (YouTube metadata)
- Performances (tango-specific metadata)
- Dancers, Orchestras, Songs, Singers, and Curations
Useful commands:
vp run db:update --sql-only
vp run db:update --local --reset
vp run db:update --remoteCloudflare deployment is handled by Cloudflare Workers Builds after the GitHub repository is connected in Cloudflare:
- Pushes to
maindeploy production. - Non-production branch builds upload Cloudflare preview versions.
- GitHub Actions runs repository checks on PRs and pushes to
main. - Node.js 24 is pinned with
.node-versionfor Cloudflare Builds.
vp run check
vp run deploy