Skip to content

A web application that displays Bitcoin-accepting locations worldwide on an interactive map.

License

Notifications You must be signed in to change notification settings

synonymdev/bitcoin-map

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🗺️ Bitcoin Map

License: MIT Next.js Node.js Docker Bitcoin Tests

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

🚀 Getting Started

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.

🐳 Running with Docker Compose

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:

💻 Development Mode

If you want to run the application in development mode, follow these steps:

🔙 Backend

# 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.

🔜 Frontend

# 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.

📁 Project Structure

  • frontend/: Next.js frontend application
  • backend/: Node.js Express backend API
  • docker-compose.yml: Docker Compose configuration for running the entire application

🔌 External APIs

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.

⏱️ Development Progress

🎨 Frontend

  • 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

⚙️ Backend

  • 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

🔧 DevOps

  • Docker and Docker Compose setup
  • GitHub Actions workflows for testing
  • Test coverage reporting

👥 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📄 License

This project is licensed under the MIT LICENSE.

About

A web application that displays Bitcoin-accepting locations worldwide on an interactive map.

Resources

License

Stars

Watchers

Forks