An interactive map for discovering and sharing local hidden gems in a city. Built for Vienna, but easily adaptable to any city.
- Interactive Leaflet map with colored category markers
- Bilingual support (German / English) with URL parameter control
- Sidebar with search, category filters, and place cards
- "Suggest a place" modal with map picker and reverse geocoding
- Feedback system for existing places
- Geolocation support ("My location")
- Fully standalone — single HTML file, no build step
- Mobile responsive
The app reads place data from a Google Sheets spreadsheet via a Google Apps Script web app (API). Users can suggest new places and leave feedback, which gets written to separate sheets for review.
This project is designed to be reusable. To set it up for your own city:
- Upload the Google Sheet template to Google Drive
- Deploy the Apps Script
- Update
index.html:- Replace the
API_URLwith your own Apps Script deployment URL - Change the default map center coordinates to your city
- Update the Google Maps list links
- Replace the
- Deploy via GitHub Pages or any static hosting
The spreadsheet needs 4 sheets:
Places: columns forid,name,lat,lng,category,comment_de,comment_en,address,gmaps_urlCategories: columns forkey,name_de,name_en,colorSuggestions: automatic columnsFeedback: automatic columns
See google_sheets_template.xlsx.
The code for the Apps Script can be found in apps_script.gs. In your Google Sheet, go Extensions > Apps Script and paste it there. Then deploy the script, giving access to "Everyone". Copy the URL and paste it to API_URL in index.html.
- Leaflet for maps
- OpenStreetMap tiles
- Nominatim for reverse geocoding
- Google Sheets + Apps Script as a simple backend
- Vanilla JavaScript, no frameworks
MIT — free to use, modify, and share.