A decentralized file storage platform built on the BSV blockchain with Next.js, enabling users to securely upload, store, and tokenize files as NFTs.
- Blockchain Storage: Permanent file storage on BSV blockchain
- NFT Tokenization: Convert any file into tradeable NFTs
- Multiple Storage Methods: Choose between quick metadata storage or full on-chain storage
- Google Authentication: Secure login with Google OAuth (HandCash coming soon)
- Theme System: Multiple UI themes with dynamic switching
- Responsive Design: Works seamlessly on desktop and mobile
- Framework: Next.js 15.5 with App Router
- Language: TypeScript
- Styling: Tailwind CSS v4
- Authentication: NextAuth.js with Google OAuth
- Database: Prisma ORM with SQLite
- Icons: Lucide React
- Blockchain: BSV libraries for transaction handling
- Node.js 18+
- npm or yarn
- Google OAuth credentials
- HandCash Developer Account (optional)
git clone https://github.com/bitcoin-apps-suite/bitcoin-drive.git
cd bitcoin-drive
npm install
Create a .env.local
file in the root directory:
# NextAuth Configuration
NEXTAUTH_URL=http://localhost:2030
NEXTAUTH_SECRET=your-secret-key-here
# Google OAuth
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
# HandCash (Optional)
HANDCASH_APP_ID=your-handcash-app-id
HANDCASH_APP_SECRET=your-handcash-secret
npx prisma generate
npx prisma db push
npm run dev
Open http://localhost:2030 in your browser.
bitcoin-drive/
βββ src/
β βββ app/ # Next.js App Router
β β βββ api/ # API routes
β β β βββ auth/ # NextAuth endpoints
β β β βββ handcash/ # HandCash integration
β β β βββ upload/ # File upload handling
β β βββ layout.tsx # Root layout
β β βββ page.tsx # Home page
β βββ components/ # React components
β β βββ Providers.tsx # Context providers
β β βββ ThemeSelector.tsx # Theme system
β β βββ UploadModal.tsx # File upload UI
β βββ lib/ # Utilities
βββ prisma/
β βββ schema.prisma # Database schema
βββ public/ # Static assets
βββ package.json # Dependencies
npm run dev
- Start development server on port 2030npm run build
- Build for productionnpm start
- Start production servernpm run lint
- Run ESLintnpm run backend
- Run legacy Express server (deprecated)
The app includes a dynamic theme system with multiple presets:
- Cyberpunk (Purple/Pink)
- Forest (Green)
- Ocean (Blue)
- Sunset (Orange/Pink)
- Monochrome (Black/White)
- Neon (Bright colors)
- Custom themes can be added
The app supports two authentication methods:
- Google OAuth (Currently active)
- HandCash (Integration in progress)
Authentication is optional - users can browse the interface without signing in.
Files can be uploaded with different storage options:
- Full BSV: Complete file stored on blockchain
- Hybrid: Metadata on BSV, file on traditional storage
- NFT Mode: Tokenize files as tradeable NFTs
vercel
The app auto-deploys to bitcoin-drive.vercel.app on push to main.
docker build -t bitcoin-drive .
docker run -p 2030:2030 bitcoin-drive
A macOS utility app is included to quickly free port 2030:
open "Kill Port 2030.app"
Add it to your dock for quick access.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the Open BSV License Version 5.
Β© 2025 The Bitcoin Corporation LTD. Registered in England and Wales β’ Company No. 16735102
- BSV Blockchain for scalable storage
- HandCash for wallet integration
- Next.js team for the amazing framework
- The open-source community
For questions or support, please open an issue on GitHub.
Β© 2025 The Bitcoin Corporation LTD. All rights reserved.
Built with β€οΈ using Next.js and BSV# Auto-deploy test