← All projects

EchoLocation

Travel the world through sound — click any country to see what's trending, powered by Last.fm.

AngularNode / ExpressMongoDBAWS (S3, EC2, PM2)Leaflet.jsSolo project View on GitHub →

The idea

Most streaming platforms recommend music based on your own past listening — which quietly narrows what you hear over time into an echo chamber. EchoLocation breaks that pattern by letting you explore music by geography instead of algorithm: click any country on the map and instantly see what’s trending there, powered by Last.fm’s real listening data.

Architecture

A three-tier setup: an Angular frontend served as a static site, an Express API in the middle, and MongoDB Atlas holding the exploration history.

EchoLocation architecture diagram Three-tier architecture: Angular on S3, Express on EC2, MongoDB Atlas for data.

Built in five vertical slices

Rather than building layer by layer, I built the app as five end-to-end slices — each one shippable and testable before starting the next.

In action

Map view showing Belarus selected with its top tracks listed Exploring a country — clicking Belarus surfaces its top 10 most-listened tracks in the sidebar.

Mobile view showing the exploration history tab Exploration history, and fully responsive — the sidebar collapses cleanly on mobile, with past visits pulled straight from MongoDB.

A decision worth knowing

The original plan used a second API (BigDataCloud) to reverse-geocode map click coordinates into country names. During implementation, this turned out to be unnecessary: the GeoJSON country-polygon layer already carries the country name as a feature property, so clicking a country returns its name directly — no extra API call, one less thing that can fail, and no rate limit to worry about.