A fast-paced Bitcoin-themed arcade runner where you dodge obstacles, collect sats, charge your Lightning power, and test your Bitcoin knowledge.
**Live game:
SAT SPRINT is designed as a browser game first, with plans to expand to mobile platforms.
- ₿ Bitcoin-themed endless runner
- 🟠 Collect sats while playing
- ⚡ Lightning charge mechanic
- 🧠 Bitcoin knowledge quizzes
- ❤️ Limited lives
- ⏱️ Life revival system
- 💾 Save and resume your run
- ⏸️ Pause your game when leaving the run
- 🏆 Score tracking
- ⚡ Developer support through Lightning
- 📱 Mobile-friendly interface
- 🌐 Play directly from a web link
Enjoying SAT SPRINT?
You can support development using Lightning:
Lightning Address: mugoiri@blink.sv
Every sat helps support continued development of the game. 🧡
- Start a run.
- Move your character to avoid obstacles.
- Collect Bitcoin and satoshi rewards.
- Build your Lightning charge.
- Answer Bitcoin quiz questions.
- Keep your run going and beat your high score.
Players have a limited number of lives.
When you run out of lives, you can wait for a revival before continuing.
SAT SPRINT saves your active run when you pause or open the developer-support screen.
Your progress can be resumed instead of losing the current run.
- HTML5
- CSS3
- JavaScript
- Lightning Network
- Git & GitHub
- Render
Purely for educational purposes.
Open index.html in a browser or serve the project folder from a simple static server.
A minimal backend is available in backend/ for live high-score and saved-run sync.
- Change to the backend folder:
cd backend - Install dependencies:
npm install
- Start the server:
npm start
- Open
http://localhost:3000in a browser.
The backend serves index.html and the js/ assets automatically, while exposing:
GET /api/high-scoresPOST /api/high-scoresGET /api/run-snapshotsPOST /api/run-snapshot
Additional helpful endpoints for real-time testing:
GET /api/active-players— returns currently connected players (for diagnostics).
Testing across devices (LAN or internet):
-
LAN: start the backend bound to all interfaces and use your machine IP. Example:
cd backend BIND_ADDR=0.0.0.0 npm startThen in another device's browser set the WS URL before loading the game:
window.SAT_SPRINT_WS_URL = 'ws://<SERVER_IP>:3000/ws' location.reload();
-
Quick internet tunnel: use
ngrokto expose your local port (good for remote testing):ngrok http 3000
Then use the provided HTTPS host and set
window.SAT_SPRINT_WS_URLtowss://<NGROK_HOST>/wsand reload the page on each device.
Security note: these are development convenience steps. For production, host the backend on a secure public host with TLS and proper authentication.
Admin cleanup (remove test data)
You can remove test entries remotely using the admin cleanup endpoint. First set an admin token in the environment on the server:
export ADMIN_TOKEN="your-secret-token"
BIND_ADDR=0.0.0.0 npm startThen call the cleanup endpoint from a trusted machine:
curl -X POST https://<SERVER>/api/high-scores/cleanup -H "Content-Type: application/json" -d '{"mode":"remove-test"}' -H "x-admin-token: your-secret-token"Use mode: clear-all to wipe the leaderboard (be careful).