An open API service indexing awesome lists of open source software.

https://github.com/rikmueller/whatsaround

Discover places around your route or location
https://github.com/rikmueller/whatsaround

folium gpx leaflet map osm overpass-api

Last synced: 4 months ago
JSON representation

Discover places around your route or location

Awesome Lists containing this project

README

          

# WhatsAround

**Find OpenStreetMap POIs along your GPX tracks. Plan smarter: campsites, water sources, shelters, restaurantsβ€”everything you need along your route.**

**🌐 Try it online: [getwhatsaround.app](https://getwhatsaround.app)**

---

## 1. How to Use πŸ’‘

### 1.1 Upload Your GPX Track

- Drag and drop your `.gpx` file onto the map
- Your track appears instantly (blue line with start/end markers)
- Map automatically centers on your route

### 1.2 Choose What to Find

**Quick presets:**
- πŸ•οΈ Campsites
- πŸ’§ Drinking water
- 🏠 Accommodation (hotels, hostels, B&Bs)
- 🍴 Food & restaurants
- πŸͺ Shops & supermarkets
- 🚽 Public toilets
- β›Ί Shelters

**Custom filters:**
Build your own using OpenStreetMap tags (e.g., `amenity=restaurant`, `shop=bicycle`)

### 1.3 Generate Results

- Set your search radius (1-50 km from track)
- Click **Search**

### 1.4 Explore Results

- **Interactive map** - Click markers for details (name, distance, website, hours)
- **Excel export** - Sorted by distance from start, with all metadata
- **Multiple tile layers** - OpenStreetMap, OpenTopoMap, CyclOSM
- **Mobile-friendly** - Works on phones and tablets

---

## 2. Project Design & Architecture

### 2.1 Project Structure πŸ—οΈ

```
WhatsAround/
β”œβ”€β”€ backend/ # Python backend
β”‚ β”œβ”€β”€ api/ # Flask REST API
β”‚ └── core/ # Processing pipeline (GPX, Overpass, filtering)
β”œβ”€β”€ cli/ # Command-line interface
β”œβ”€β”€ frontend/ # React + TypeScript web UI
β”‚ └── src/
β”‚ β”œβ”€β”€ components/ # UI components (Map, Settings, Modals)
β”‚ └── hooks/ # WebSocket integration
β”œβ”€β”€ config/ # Configuration by usage mode
β”‚ β”œβ”€β”€ cli/ # CLI standalone
β”‚ β”œβ”€β”€ local-dev/ # Local development
β”‚ β”œβ”€β”€ docker-dev/ # Docker with hot reload
β”‚ └── docker-prod/ # Production Docker
β”œβ”€β”€ deployment/ # Docker build files
└── data/
β”œβ”€β”€ presets.yaml # Filter presets
β”œβ”€β”€ input/ # GPX files
└── output/ # Generated results
```

### 2.2 Key Technologies

**Backend:**
- Python 3.x with Flask for REST API
- pandas + openpyxl for Excel export
- Folium for map generation
- pyproj for geodesic calculations
- Overpass API for OSM queries

**Frontend:**
- React 18 + TypeScript
- Vite for fast development
- Leaflet + React-Leaflet for interactive maps
- Socket.IO for real-time updates
- Axios for API communication

**Infrastructure:**
- Docker Compose for containerization
- Nginx for production reverse proxy

### 2.3 Key Features ✨

- **πŸ—ΊοΈ Map-first interface** - See your track and POIs continuously
- **⚑ Real-time updates** - POIs appear as they're found
- **πŸ“± Mobile responsive** - Collapsible settings, touch-friendly
- **🎨 Smart coloring** - Different colors for different POI types
- **🎯 Accurate distances** - WGS84 geodesic calculations
- **πŸ“¦ Self-contained** - Runs offline after setup (uses public Overpass API)

### 2.4 Frontend Architecture
see **[FRONTEND.md](FRONTEND.md)**

### 2.5 Configuration βš™οΈ

WhatsAround is configured via environment variables. See respective configuration directories for available options.

**Filter presets** are defined in [data/presets.yaml](data/presets.yaml). Add your own!

---

## 3. Getting Started on your machine πŸš€

You don't want to use getwhatsaround.app, but rather your own setup?
WhatsAround offers **four ways to run** the application on your machine, depending on your needs.

To start, clone the repository:
```bash
git clone https://github.com/rikmueller/whatsaround.git
```
And decide on a flavor:

### 3.1 Command-Line Interface ⌨️

For batch processing and automation: [config/cli/README.md](config/cli/README.md)

### 3.2 Local Development πŸ’»

Run backend and frontend locally for development: [config/local-dev/README.md](config/local-dev/README.md)

### 3.3 Docker Development (Dev-Setup with hot reload) 🐳

Development environment with hot reload: [config/docker-dev/README.md](config/docker-dev/README.md)

### 3.4 Docker Production 🌐

Production environment: [config/docker-prod/README.md](config/docker-prod/README.md)

---

## 4. Everything else

### 4.1 Contributing 🀝

Contributions welcome! Please open an issue first to discuss major changes.

---

### 4.2 License πŸ“œ

MIT License - see [LICENSE](LICENSE) for details

---

### 4.3 Credits πŸ™

Built with amazing open-source projects:

- **[OpenStreetMap](https://www.openstreetmap.org/)** - Community-driven map data
- **[Overpass API](https://overpass-api.de/)** - OSM query infrastructure
- **[React](https://react.dev/)** + **[TypeScript](https://www.typescriptlang.org/)** - Modern web framework
- **[Leaflet](https://leafletjs.com/)** - Interactive maps
- **[Flask](https://flask.palletsprojects.com/)** - Python web framework
- **[pandas](https://pandas.pydata.org/)** + **[openpyxl](https://openpyxl.readthedocs.io/)** - Data processing
- **[Folium](https://python-visualization.github.io/folium/)** - Python β†’ Leaflet maps

Inspired by **[GPX Studio](https://gpx.studio/)** ❀️

---

### 4.5 Development Status ⚠️

This project is under active development. Features and APIs may change. Documentation may lag behind implementation. Use at your own risk for production workloads.