When I started building a free iOS library of Clash of Clans base layouts, I assumed search would be the hard part. It turned out the hard part was deciding what a "base" even is in data terms.
The three fields that mattered
- Town Hall level – the single filter every player uses first. Stored as an integer, never as a string like "TH16", so ranges (14–16) are trivial.
- Purpose – war, farm, trophy, or hybrid. Players think in goals, not in building positions.
- Source link – the in-game copy link. Everything else is metadata; this is the payload.
What I dropped
I tried tagging "anti-2-star", "anti-3-star", "ring base", "island base"… and nobody used those filters. They were opinions, not facts, and two people tagged the same base differently. I kept them as free-text notes instead.
What I learned
- Model the decision the user makes, not the object. Players decide "I need a TH16 farm base", so that's the index.
- Keep opinionated labels out of filters. They erode trust when they're wrong.
- Validate the payload. A dead copy link is worse than no entry, so links get re-checked before they ship.
Disclosure: this is my own app, Base Layouts: War & Farm Maps (free, iOS). If you play Clash, you can try it here: https://apps.apple.com/app/apple-store/id6804564319?pt=2720803&ct=devto2&mt=8
Happy to answer questions about the data model in the comments.
Top comments (0)