seoulpop · location‑based history walks

Period  — 

seoulpop is a walking guide to Seoul's heritage and historic sites that follows the user's location. I set up the servers and CI/CD alone.

Team and backend lead for member and history lookup APIs and infrastructure

Java 17Spring Boot 3.2.5Spring Data JPASpring SecurityQuerydslMySQL 8.0Redis 7.2AWS S3AWS EC2Nginx Proxy ManagerJenkinsDockerUber H3

  • Seoul history map
  • GPS alerts for nearby heritage and historic sites
  • Camera AR with real‑time content rendering
  • Location and route guidance
  • History details built from crawled data
  • Visit stamp collection

Distance calculations as users move

Problem
Coordinates of nearby heritage sites needed recalculating whenever a user moved. Finding the shortest distance every time grew costly fast, so we needed something better than a simple search.
Solution
The team compared partial search around the user's coordinates, GeoHash and Uber H3. Weighing real‑time proximity, accuracy and ease of use, we chose H3. We tested several scales and settled on about 200 m, and a teammate implemented the distance calculation.

Tracing container logs

Problem
Logs became harder to trace in Portainer as the number of containers grew. Scrolling problems in the Portainer console also made older logs hard to find.
Solution
After looking at several tools, I introduced Dozzle, which is simple to run and shows logs from many containers together. Logs for each transaction could be read on one screen, and the whole team checked logs on the same view.

Architecture

seoulpop deployment diagram showing GitLab, Jenkins, Docker, Spring Boot, MySQL, Redis and S3
Flow from code push to deployment
seoulpop cover with an introduction beside a map of historic sites
seoulpop cover with an introduction and map
seoulpop map screen with clustered historic sites
seoulpop map with the selected historic site photo and name
seoulpop camera view overlaying a past photo on the present street
seoulpop site detail screen with summary and description