Building It Up, Piece by Piece

BUILDING IN KOREA

Manballers Devlog — Episode 08

Building It Up, Piece by Piece

Check-ins, map markers, ratings, a rank system — once login worked, everything else started to feel oddly fun to build. Which was, in its own way, a problem.

Building in Korea · Building in Public · 2026


Once login worked, everything after it went strangely well. Not smoothly, exactly — but at least the direction was clear. And every time something new actually worked, it got a little more fun.

01

Starting With Check-Ins

The first real feature: take a photo on a barefoot trail, and it logs as a record. At first, this just saved whatever GPS location the phone happened to catch. Then it occurred to me — pull your phone out of a parking-lot pocket a few minutes late, and that location could be noticeably off.

So I added a way to manually adjust the location on a map — Kakao Map embedded in a WebView, where dragging the marker or tapping the map saves that spot instead. The map popup itself refused to appear at first, which cost a good while to track down. The fix: explicitly enabling a JavaScript-related option in the WebView settings.

I also capped registrations at 10 places per user. Unlimited registration felt like it would turn into messy data fast. Once someone hits 10, they have to delete one before adding a new one.

02

Pins Start Appearing on the Map

Kakao Map went into the app as a WebView, showing the places I’d checked in as pins. Early on there was a bug where only my own pins showed up. Fixing it — so that everyone’s registered places appeared together — took a few weeks to even notice.

Thinking back on it now, it’s obviously the whole point. A community app where only your own pins show up isn’t really a community app. It’s funny in hindsight, but at the time I genuinely didn’t catch it.

A search bar went in next, so people could browse other neighborhoods. Restaurants and cafés followed, using Kakao’s local search API, showing nearby food spots on the same map. I initially limited the search to a 1.5km radius. Later it became clear that was far too narrow — if someone’s planning to walk around a neighborhood they’re just visiting, 1.5km barely covers anything.

A community app where only your own pins show up isn’t really a community app.

03

Community, Ratings, and Everything After

From here, features started stacking up quickly.

Trail Ratings

Star ratings across four categories — soil quality, transit access, convenience, and upkeep — plus a one-line comment.

Food Ratings

Health, value, taste, and convenience. Putting “health” first was deliberate — it’s the identity of this app, and the ordering was meant to say so.

Rank System

Beginner Barefooter through Novice, Intermediate, Expert, and Master Barefooter, with points earned from check-ins, ratings, and posts.

Walking / Resting Toggle

Started as a simple status switch, then became a real timer — start time saved to the server, so it keeps running even if the app is closed and reopened.

Flash Meetups & Marketplace

Flash meetups for finding people to walk with. A small marketplace board for sharing seasonal produce or health foods.

Directions via Kakao Map

Tapping a location opens the Kakao Map app directly, routed to that exact spot.

Looking back, I think I kept adding things because it was fun. Every “wait, this actually works?” moment became motivation for the next one.

04

More Features, More Errors

The more features piled up, the more screens and files piled up with them. Odd problems started creeping in across the codebase — the same function name declared twice, code that belonged in one file sitting in a completely different one, mismatched parentheses freezing the whole app.

One day, while reviewing Firestore security rules, I found that roughly half the collections actually used in the code were entirely missing from the rules. Any collection not listed gets automatically blocked — which meant ratings and marketplace posts had been failing silently, with no visible error, for who knows how long.

Fixing it meant going through the actual code line by line, pulling out every collection name genuinely in use, and making sure every single one was reflected in the rules. Only then did things settle down.

Around this point, I started sensing something, vaguely at first: this was growing in a direction that was getting harder to manage.

Up Next

Episode 09 — Back to Zero

Why I decided to strip features back out, the ones that made it to launch anyway, and the question I kept asking myself: does this actually match why I started building this in the first place?

Manballers Devlog — Episode 08

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top