cBPM (Crowd-based BPM) is an open-source experiment that captures the collective rhythm of a crowd by letting users tap to the beat during live music events. Taps are aggregated in real time, producing an accurate, community-driven BPM display.
Built with ultra-fast and lightweight technologies — no bloated frameworks, just HTMX, Animora, and Rust.
- 🖱️ Tap-based beat input from audience
- ⏱️ Real-time BPM aggregation and display
- 📲 Mobile-first responsive interface
- ⚡ Built using HTMX and Animora
- 🔌 Rust backend with WebSockets and Axum
Layer | Technology |
---|---|
Frontend | HTMX + Animora (CSS) |
Backend | Rust + Axum + WebSocket |
Database | SQLite (or Postgres) |
Hosting | Static + binary server |
cbpm/
├── frontend/
│ ├── index.html # Main UI
│ ├── app.js # Tap logic
│ ├── animora.css # Custom utility-first CSS
│ └── assets/
├── backend/
│ ├── src/
│ │ └── main.rs # Rust server with Axum
│ └── Cargo.toml
└── README.md
You can run this with any HTTP server.
cd frontend
python3 -m http.server 8080
# Visit http://localhost:8080
Make sure you have Rust installed.
cd backend
cargo build --release
./target/release/cbpm_backend
- Users open the web app and tap in rhythm.
- Each tap is sent to the backend via HTMX requests or WebSockets.
- Server calculates rolling BPM average from all active users.
- Visual BPM display is updated in real time.
Add visuals or demo GIFs in
/frontend/assets/
and reference them here.
MIT © Mehmet Akalın
Contributions are welcome! Fork the repo, improve it, and open a PR.