A decentralized calendar application built on Bitcoin SV blockchain with HandCash authentication. Your events and schedules are encrypted and stored on the blockchain, accessible only with your HandCash login.
- π Encrypted Storage: All calendar events are encrypted before being stored on the blockchain
- π HandCash Authentication: Secure login with your HandCash wallet
- π Access Anywhere: Your calendar is available from any device with your HandCash login
- π Permanent Storage: Built on Bitcoin SV for immutable event storage
- π Rich Calendar: Full-featured calendar with event scheduling and management
- πΎ Auto-save: Automatic saving of your events
- π± Responsive: Works on desktop and mobile devices
- 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-calendar.git cd bitcoin-calendar -
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: Calendar data is encrypted using a key derived from the user's HandCash authentication
- Storage: Encrypted calendar events are stored on the Bitcoin SV blockchain (currently simulated with localStorage in demo mode)
- Access: Only the authenticated user can decrypt and read their calendar data
- 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 calendar data storage and retrievalCalendarView: Calendar interface with blockchain integrationLogin: HandCash authentication interface
- Calendar events are encrypted client-side before storage
- Encryption keys are derived from user authentication tokens
- No plaintext calendar data ever leaves the user's device unencrypted
- Authentication tokens are securely managed in localStorage
- Ctrl/Cmd + S: Save event
- Ctrl/Cmd + N: New event
- F11: Toggle fullscreen mode
- Arrow Keys: Navigate calendar
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 calendar management