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.
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?