Mozgalice
Posted in 12-projects
By Dušan Dželebdžić
Growing up in former Yugoslavia, word games and brain teasers were everywhere. TV quiz shows, newspaper puzzle pages, the mandatory companion on every vacation and road trip in the pre-smartphone era. They were social rituals disguised as puzzles. And online? Nothing captured that feeling in our language, with our culture baked in.
So for February's project I built Mozgalice, a daily puzzle platform for Serbian speakers. Every morning (Belgrade time) it publishes a fresh set of three puzzles:
- Pogodi reč: guess a five-letter Serbian word in six tries
- 4x4: find four groups of four related items
- Asocijacije: uncover hidden connections across four columns to find a final answer
All players get the same puzzles on the same day. Solve them, share your results spoiler-free, compare with friends. The whole thing takes about five minutes.
Why daily puzzles work
A shared daily challenge does something a puzzle archive never will. Everyone gets the same problem, so you can discuss it without spoiling it, and it becomes a conversation starter and a reason to come back tomorrow. The cadence builds the habit (same time, same format, low commitment) and the shared experience builds community before there's a single social feature in the product.
Designing for Serbian
Building a word game for Serbian isn't straightforward. The language has diacritics (č, ć, š, ž, đ), digraphs that behave as single letters (lj, nj, dž), and two scripts, Latin and Cyrillic. Word frequency and morphology look nothing like English, so you can't port an English wordlist approach and call it a day. Getting the letter handling right was a real chunk of the game logic.
How it's built
Mozgalice is a fully static Next.js app. No backend, no database, no server-side rendering. Puzzles are authored in YAML and compiled to JSON at build time, hosting is S3 plus CloudFront with automatic deploys via GitHub Actions, and all state (progress, streaks, settings) lives in localStorage. PostHog handles analytics so I can see retention and completion patterns.
The one clever bit: a CloudFront Function blocks requests for future puzzle dates, so you can't peek ahead even though tomorrow's puzzles are already built and sitting in the bucket.
The payoff is a site that's fast, costs almost nothing to run, and has no server to go down at 7am when the new puzzles drop.
The three games
Pogodi reč
A word-guessing game with Serbian vocabulary. You get six attempts to guess a five-letter word, and each guess gives you feedback: correct letter in the correct spot, correct letter in the wrong spot, or letter not in the word.
The curated answer list avoids frustration. No obscure words, no proper nouns, no profanity. The broader guess list is more permissive, so you can try words even if they'd never be the answer.
4x4
Sixteen words in a grid. Find four groups of four that share a hidden connection. Select four words and submit; if the group is correct, it locks in. You get a limited number of mistakes before the game ends.
The trick is that some words feel like they belong to multiple groups. Sorting out the overlaps is where the real challenge lives.
Asocijacije
Four columns, each with four hidden clues. Reveal clues one by one to figure out what connects each column, then find the final answer that ties all four columns together.
This is the most distinctly Balkan game of the three. Anyone who's watched Serbian TV knows the format. It rewards lateral thinking and cultural knowledge.
Sharing without spoilers
After finishing all three games, you can share a compact summary:
Mozgalice #12
Pogodi reč 4/6
🟩⬛⬛⬛⬛
🟨🟩⬛⬛⬛
🟩🟩🟩🟩🟩
4x4 🟩🟨🟪🟦
Asocijacije A2 B4 C3 D1 · F2
No answers revealed. Just enough to show how you did and spark a conversation.
Current status
Mozgalice is live in pre-launch at mozgalice.net. You can see the landing page, try a demo puzzle, and join the waitlist. The games are built, the content pipeline is running, and the infrastructure is ready; the full platform launches once the waitlist hits critical mass, because a daily social puzzle is only fun when there's somebody to compare results with.
What I learned
Static-first architecture paid off exactly as hoped: no ops burden, no scaling worries, instant page loads. Language-specific products have a real moat, and the Balkan puzzle space is wide open. But the code turned out to be the easy part. Curating three good puzzles every single day is the actual product and the actual ongoing work, and pre-launch is a product phase of its own. Building a waitlist takes as much effort as building the app.
If you speak Serbian (or any ex-Yu language), I'd love to have you on the waitlist. The daily puzzles are coming soon.
Previous: Tempmarks
Next: iOS Utility