A decentralized education platform built on Bitcoin SV blockchain with HandCash authentication. Your educational content is encrypted and stored on the blockchain, accessible only with your HandCash login.
- 🔒 Encrypted Storage: All documents are encrypted before being stored on the blockchain
- 🔑 HandCash Authentication: Secure login with your HandCash wallet
- 🌐 Access Anywhere: Your documents are available from any device with your HandCash login
- 💎 Permanent Storage: Built on Bitcoin SV for immutable document storage
- ✍️ Rich Editor: Distraction-free writing with image support
- 💾 Auto-save: Automatic saving of your work
- 📱 Responsive: Works on desktop and mobile devices
- ⚡ Fast & Efficient: Optimized for speed and reliability
- Node.js (v16 or later)
- A HandCash wallet and developer account
- HandCash App ID from the HandCash Developer Dashboard
-
Clone the repository:
git clone https://github.com/bitcoin-apps-suite/bitcoin-education.git cd bitcoin-education -
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env
Edit
.envand add your HandCash configuration:REACT_APP_HANDCASH_APP_ID=your_handcash_app_id_here REACT_APP_HANDCASH_REDIRECT_URL=http://localhost:3000/auth/handcash/callback -
Start the development server:
npm start
-
Open http://localhost:3000 to view it in the browser.
npm run buildThis creates an optimized build in the build folder ready for deployment.
The app can be deployed to any static hosting service like Vercel, Netlify, or GitHub Pages.
For Vercel:
npm install -g vercel
vercel- Authentication: Users sign in with their HandCash wallet using OAuth2 flow
- Encryption: Document content is encrypted using a key derived from the user's HandCash authentication
- Storage: Encrypted documents are stored on the Bitcoin SV blockchain (currently simulated with localStorage in demo mode)
- Access: Only the authenticated user can decrypt and read their documents
- Frontend: React with TypeScript
- Authentication: HandCash OAuth2 REST API
- Encryption: AES encryption via CryptoJS
- Storage: Bitcoin SV blockchain (with BSV library)
- State Management: React hooks and local state
HandCashAuthService: Handles OAuth2 authentication with HandCashBlockchainDocumentService: Manages encrypted document storage and retrievalDocumentEditor: Rich text editor with blockchain integrationLogin: HandCash authentication interface
- Documents are encrypted client-side before storage
- Encryption keys are derived from user authentication tokens
- No plaintext document content ever leaves the user's device unencrypted
- Authentication tokens are securely managed in localStorage
- Ctrl/Cmd + S: Save document
- Ctrl/Cmd + N: New document
- F11: Toggle fullscreen mode
- Tab: Insert 4 spaces (indentation)
npm start: Runs the app in development modenpm test: Launches the test runnernpm run build: Builds the app for productionnpm run eject: Ejects from Create React App (not recommended)
This app integrates with HandCash using:
- HandCash Connect SDK for wallet operations
- HandCash OAuth2 REST API for authentication
- BSV library for blockchain operations
REACT_APP_HANDCASH_APP_ID: Your HandCash application IDREACT_APP_HANDCASH_APP_SECRET: Your HandCash application secret (optional)REACT_APP_HANDCASH_REDIRECT_URL: OAuth callback URL
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the Open BSV License version 5 - see the LICENSE file for details.
Copyright © 2025 The Bitcoin Corporation LTD
Registered in England and Wales • Company No. 16735102
For support, please contact the development team or create an issue on GitHub.
- Built on Bitcoin SV blockchain
- Powered by HandCash for authentication
- Inspired by the need for decentralized, private document storage