Discover concerts for the artists you actually listen to.
Live App β’ Architecture β’ Infrastructure β’ Repo Scope
StageScout transforms your Spotify listening history into personalized concert recommendations. Connect your account, pick your location and dates, and discover live shows from your favorite artists.
- Spotify-Powered Discovery β Pull your top artists directly from Spotify for truly personalized recommendations
- Location & Date Filtering β Search for concerts within a specific radius and date range
- Progressive Loading β See location-based matches instantly while artist-specific events load in the background
- Server-Side Sessions β Secure session management with hardened cookie settings
- Multi-API Integration β Unified interface for Spotify, Ticketmaster, and Geoapify
- Production-Ready β Full IaC pipeline with Terraform, Ansible, Docker, and Nginx
| Category | Stack |
|---|---|
| Backend | Flask, Gunicorn |
| Frontend | HTML, CSS, Vanilla JS |
| APIs | Spotify, Ticketmaster, Geoapify |
| State | Flask-Session, Filesystem Cache |
| Infrastructure | AWS EC2, Docker, Nginx |
| Automation | Terraform, Ansible |
| Monitoring | Prometheus, Grafana |
flowchart LR
subgraph Auth["1. Authentication (Spotify)"]
A1[Click Login] --> A2[OAuth redirect]
A2 --> A3[Approve access]
A3 --> A4[Session created]
end
subgraph Artists["2. Artist Selection (Spotify)"]
B1[Fetch top artists] --> B2[Display grid]
B2 --> B3[Select favorites]
B3 --> B4[Saved to session]
end
subgraph Location["3. Location & Dates (Geoapify)"]
C1[Type city/address] --> C2[Geocode location]
C2 --> C3[Capture lat/long]
C3 --> C4[Pick date range]
end
subgraph Concerts["4. Concert Discovery (Ticketmaster)"]
D1[Build query] --> D2[Geo + date search]
D2 --> D3[Fetch nearby events]
D3 --> D4[Match to artists]
D4 --> D5[Filter results]
end
subgraph Results[5. Results Dashboard]
E1[Display cards] --> E2[Venue, date, price]
E2 --> E3[Background load remaining]
end
Auth --> Artists
Artists --> Location
Location --> Concerts
Concerts --> Results
classDef SpotifyStep fill:#1db954,color:#fff,stroke:#1db954
classDef GeoapifyStep fill:#e22121,color:#fff,stroke:#e22121
classDef TicketmasterStep fill:#f47b20,color:#fff,stroke:#f47b20
classDef ResultsStep fill:#1e3264,color:#fff,stroke:#1e3264
class Auth,Artists SpotifyStep
class Location GeoapifyStep
class Concerts TicketmasterStep
class Results ResultsStep
The magic: Ticketmaster searches events by geographic coordinates, while Spotify provides your artist list. StageScout bridges both β finding concerts near you for the artists you actually listen to.
| Landing Page | Preferences |
|---|---|
![]() |
![]() |
flowchart LR
U[User Browser] --> N[Nginx]
N --> A[Flask App]
A --> S[Spotify API]
A --> T[Ticketmaster API]
A --> G[Geoapify API]
A --> C[Cache & Sessions]
A --> M[Prometheus]
M --> P[Grafana]
flowchart TD
D[deploy.sh] --> TF[Terraform]
TF --> AWS[AWS EC2]
D --> AN[Ansible]
AN --> HOST[Ubuntu Host]
HOST --> NG[Nginx]
HOST --> DC[Docker]
DC --> APP[StageScout]
- Application Architecture β Routes, data flow, security model
- Infrastructure β AWS setup, deployment, monitoring
- Repository Scope β What's public vs. private
Included:
- Product overview and feature documentation
- Architecture diagrams and flowcharts
- Public-safe screenshots
- High-level stack and operations notes
Excluded:
- Application source code
- Terraform and Ansible configurations
- Secrets, credentials, and environment variables
- Production deployment details
MIT License β see LICENSE for details.
Built with Flask β’ Powered by Spotify

