A social platform for the Bitcoin community built with HandCash authentication. Connect, share ideas, and engage with fellow Bitcoin enthusiasts in a decentralized social environment.
- 🔑 HandCash Authentication: Secure login with your HandCash wallet
- 🐦 Twitter-like Interface: Familiar social media experience optimized for Bitcoin discussions
- 💬 Real-time Feed: Share thoughts, insights, and updates with the Bitcoin community
- ❤️ Social Interactions: Like, retweet, and engage with posts from other users
- 🔥 Trending Topics: Discover what's hot in the Bitcoin space
- 📱 Responsive Design: Seamless experience across desktop and mobile devices
- 🌐 Decentralized: Built on Bitcoin SV for transparent and secure social interactions
- 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-social.git cd bitcoin-social
-
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env
Edit
.env
and 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 build
This 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