A web application that displays information about your favorite artists and bands by fetching data from multiple API endpoints.
- Asynchronous API Integration: Non-blocking data fetching from multiple endpoints with graceful handling of incomplete data
- Advanced Filtering System:
- Real-time dual range sliders for Creation Date and First Album Year with synchronized numeric inputs
- Member count filtering with checkbox selection
- Location-based filtering with autocomplete
- Instant grid updates as filters are adjusted
- Reset functionality to quickly clear all filters
- Mobile-optimized filter sidebar with toggle button
- Geolocalization & Mapping:
- Integration with OpenStreetMap (Nominatim API) to convert tour locations into geographic coordinates
- Intelligent caching system with persistence (
locations.json) to minimize API hits - Asynchronous background geocoding to pre-populate location data
- Progressive Loading: Server starts immediately; redirects to loading page while data is being fetched
- Progressive Enhancement: Search-bar functionality works with vanilla form submission, enhanced with JavaScript for dynamic suggestions
- Zero external dependencies: Pure Go backend with only standard packages
- Interactive Maps: Leaflet.js powered maps showing concert locations with chronological tour paths.
- Dynamic Path Highlighting: Visualizes previous and next tour stops when clicking on specific location markers.
- Smooth Scrolling: Fluid page navigation for a more polished feel.
- Interactive UI: Bouncy "spring" hover effects on images and card highlights for better feedback.
- Mobile-Ready: Optimized responsive layouts for error pages and artist grids.
- Accessible Keyboard Navigation: ESC to close sidebar/suggestions, arrow keys to navigate search results
- Backend: Go
- Frontend:
- HTML/CSS
- Javascript
- Deployment: Render
- Clone the repository:
git clone https://github.com/LeKoutz/groupie-tracker.git
cd groupie-tracker- Run the application:
go run main.go- Open your browser and navigate to
http://localhost:8080(or whatever port is set in your PORT environment variable)
Check out the live application
This project is licensed under the MIT License - see the LICENSE file for details.