A web application that displays Bitcoin-accepting locations on an interactive map, making it easier for users to find and support businesses that accept Bitcoin.
demo.mp4
Quick demo of Bitcoin Map in action
This project consists of a Next.js frontend and Node.js Express backend. You can run the application using Docker Compose or in development mode.
The easiest way to run the entire application in production mode is using Docker Compose:
# Clone the repository (if you haven't already)
git clone https://github.com/synonymdev/bitcoin-map.git
cd bitcoin-map
# Build and start the containers
docker-compose up --build -d
# To stop the containers
docker-compose down
The application will be available at:
- 🌐 Frontend: http://localhost:3000
- 🔌 Backend API: http://localhost:3001/api
If you want to run the application in development mode, follow these steps:
# Navigate to the backend directory
cd backend
# Install dependencies
npm install
# Start the development server
npm run dev
The backend server will run at http://localhost:3001.
# Navigate to the frontend directory
cd frontend
# Install dependencies
npm install
# Copy environment variables file
cp .env-sample .env
# Start the development server
npm run dev
The frontend application will run at http://localhost:3000.
frontend/
: Next.js frontend applicationbackend/
: Node.js Express backend APIdocker-compose.yml
: Docker Compose configuration for running the entire application
The backend integrates with the following external services:
- BTCMap.org: Provides data on Bitcoin-accepting locations worldwide
- Overpass API: Used to fetch additional geographic and point-of-interest data from OpenStreetMap
These APIs are used to synchronize and maintain our database of Bitcoin-accepting locations.
- Interactive map display using Leaflet
- Marker clustering for improved performance
- Bitcoin location markers on the map
- Responsive design
- Location details popup
- Improved popup UI with better styling and organization
- Custom animations for loading states
- User location button for centering map on user's position
- Optimized data loading (coordinates first, details on demand)
- Number animations for statistics
- Name-based search interface
- Proximity search UI with radius selector
- Country leaderboard UI
- Direct links to OpenStreetMap for adding/editing locations
- Documentation page
- About page
- RESTful API for Bitcoin locations
- SQLite database integration
- Data synchronization system
- CORS configuration for frontend access
- Basic error handling
- Optimized API endpoints (coordinates-only and location details)
- Comprehensive test suite with Jest
- GitHub Actions workflows for testing and coverage
- Name-based search API endpoint
- Proximity search implementation using latitude and longitude
- Country ranking data aggregation
- API rate limiting implementation
- API documentation
- Docker and Docker Compose setup
- GitHub Actions workflows for testing
- Test coverage reporting
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT LICENSE.