Skip to content

Latest commit

 

History

History
156 lines (111 loc) · 3.13 KB

File metadata and controls

156 lines (111 loc) · 3.13 KB

BitPilot

Use Bitcoin for something useful. Learn what you need along the way.

BitPilot is a beginner-friendly onboarding app organized around practical outcomes: receiving a payment, sending money, securing savings, publishing independently, or contributing to an open-source project.

Instead of starting with a large curriculum, learners choose a concrete task and complete a short journey by:

  • sending payments
  • scanning QR codes
  • creating identities
  • completing simple tasks

The full Bitcoin, Lightning, Nostr, eCash, self-custody, privacy, sovereignty, and open-source mission library remains available as an optional exploration mode.

Built for:

  • workshops
  • hackathons
  • classrooms
  • communities
  • self-learning

Features

  • Mission-based onboarding
  • Learn → Quiz → Do flow
  • Real Lightning & Nostr interactions
  • Facilitator dashboard
  • Beginner-friendly UX
  • SQLite-powered backend
  • Rust + React stack

Stack

Backend

  • Rust
  • Axum
  • SQLx
  • SQLite

Frontend

  • React
  • TypeScript
  • Vite

Running Locally

Backend

cd backend
cargo run

Runs on:

http://localhost:8080

Frontend

cd frontend
npm install
npm run dev

Runs on:

http://localhost:5173

Project Structure

bitpilot/
├── backend/     Rust API server
├── frontend/    React frontend
└── README.md

Current Status

BitPilot currently uses:

  • simulated rewards
  • optional LNbits integration
  • SQLite local storage

No real funds are required to use the app.


Running a weekly challenge

A challenge is a themed public leaderboard over a mission subset and a time window. The easiest way to create one is the app itself: open the landing page, scroll to "Community challenges", and hit "Run a weekly challenge". The form offers the theme presets below, shows the share link, and displays the facilitator token once.

Prefer scripting it? The same endpoint takes a single request (creation is open, like session creation; rate limiting controls abuse):

curl -s -X POST https://<your-backend>/api/challenges \
  -H 'content-type: application/json' \
  -d '{
    "title": "Lightning week",
    "blurb": "Receive and send your first Lightning payment.",
    "missions": [21, 22, 23, 24],
    "starts_at": 1760000000,
    "ends_at": 1760604800
  }'

The response contains the challenge id (share https://<your-app>/?challenge=<id> as the public page; it shows the missions, a join button while live, and the read-only leaderboard) and a facilitator_token for the live facilitator dashboard of the backing session. Completions count only between starts_at and ends_at (unix seconds).

Theme ideas that map cleanly onto the catalogue:

Theme Missions
Understand a transaction [6, 7, 19]
First Lightning payment [21, 22, 23, 24]
Publish your first note [13, 14, 26]
Seed phrase bootcamp [11, 12, 41]

Vision

BitPilot aims to make Bitcoin onboarding:

  • simple
  • interactive
  • practical
  • beginner-friendly

especially for communities that are new to Bitcoin and Lightning.


License

MIT License.