A desktop game where you dance salsa in front of your webcam, and computer vision judges your moves!
Real-time pose estimation (YOLO) feeds a LSTM move classifier that recognizes your dance moves (front_and_back, idle, side_step, spin) live from webcam video. Dance well and you'll earn your salsa license from Señorita Cabí and Señor Empanada, up on the slopes of Monserrate, Bogotá.
- Grab the latest
.dmgfrom Releases. - Open the
.dmgand drag Macondo into yourApplicationsfolder. - The app is ad-hoc signed, so Gatekeeper will block the first launch as "unidentified developer." Right-click (or Control-click) the app in
Applicationsand choose Open - Grant camera access when prompted
Only an Apple Silicon (arm64) build is currently published; there's no Windows/Linux release yet, see Frontend setup below to run from source instead.
- Dance clips are recorded per-move with
backend/dataset_recorder.pyintobackend/dataset/./e>/ backend/train_lstm.pytrains the LSTM classifier on that dataset and writes a checkpoint tobackend/model/lstm_move_classifier.pt.backend/test_lstm_model.pyopens a live webcam window with prediction bars.
- Python 3.12+ and a virtualenv at
.venv/in the repo root - Node.js + npm
- A webcam
- A Supabase project (for the leaderboard)
Apply supabase/schema.sql to your Supabase project to set up the leaderboard table and RPC.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txttcd frontend
npm install
cp ../.env.sample .env # fill in your Supabase URL + publishable keyRun everything together as the Electron app (starts the Python backend automatically and opens the game window):
npm run electron:devThank u so much to Tati and Dhamari for helping train our model