Discover coffee shops that accept Bitcoin and cryptocurrency payments
A location-based Progressive Web App (PWA) for finding and sharing coffee shops that accept Bitcoin and other cryptocurrencies. Built with Next.js, Tailwind CSS, and Supabase.
- 🗺️ Interactive Map - Browse coffee shops on an interactive Leaflet.js map
- 📍 Location-Based Discovery - Find nearby Bitcoin-accepting coffee shops
- 🔐 Magic Link Authentication - Passwordless login via email
- 📝 Anonymous Submissions - Submit shops without creating an account
- 👍 Voting System - Vote on shop quality and Bitcoin acceptance
- 💬 Comments & Reviews - Share experiences and tips
- 👨💼 Admin Dashboard - Review and approve submissions
- 📱 Progressive Web App - Install on mobile devices for offline access
- 🎨 Responsive Design - Mobile-first design with Tailwind CSS
- Node.js 20 or newer
- pnpm 10 or newer
- Supabase account
- HERE.com API key (for geocoding)
- ValueSERP API key (optional, for Google venue data)
-
Clone the repository
git clone https://github.com/yourusername/bitcoinlatte.git cd bitcoinlatte -
Install dependencies
pnpm install
-
Set up environment variables
cp .env.example .env.local
Edit
.env.localand add your credentials:NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key HERE_API_KEY=your_here_api_key VALUESERP_API_KEY=your_valueserp_api_key NEXT_PUBLIC_SITE_URL=http://localhost:3000
-
Set up Supabase
Run the migrations in your Supabase project:
# Option 1: Using Supabase CLI (recommended) pnpx supabase db push # Option 2: Manually in Supabase SQL Editor # Copy and paste the contents of: # - supabase/migrations/001_initial_schema.sql # - supabase/migrations/002_rls_policies.sql
-
Create Storage Bucket
In your Supabase project dashboard:
- Go to Storage
- Create a new bucket named
shop-images - Set it to public
- Configure policies (see
docs/DATABASE_SCHEMA.md)
-
Run the development server
pnpm dev
-
Open your browser
Navigate to http://localhost:3000
- Architecture - System architecture and design decisions
- Database Schema - Complete database schema with SQL
- Implementation Guide - Step-by-step implementation guide
- User Flows - User journey diagrams
- Framework: Next.js 16+ (App Router)
- Styling: Tailwind CSS
- Maps: Leaflet.js
- PWA: next-pwa
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth (Magic Link)
- Storage: Supabase Storage
- API: Next.js API Routes (Server-side only)
- Geocoding: HERE.com API
- Venue Data: ValueSERP (Google venue data)
This project is configured for Railway deployment:
# Install Railway CLI
npm i -g @railway/cli
# Login to Railway
railway login
# Link to your project
railway link
# Deploy
railway upThe railway.toml file contains all necessary configuration.
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel# Development
pnpm dev # Start development server
pnpm build # Build for production
pnpm start # Start production server
pnpm lint # Run ESLint
# Supabase
pnpx supabase start # Start local Supabase
pnpx supabase stop # Stop local Supabase
pnpx supabase db push # Push migrations to remote
pnpx supabase db pull # Pull schema from remoteContributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
This project is open source and available under the MIT License.
- Supabase - Backend infrastructure
- Next.js - React framework
- Leaflet - Interactive maps
- HERE.com - Geocoding services
- Tailwind CSS - Styling
- Website: bitcoinlatte.com
- GitHub: @yourusername
Made with ☕️ and ₿ by the BitcoinLatte team