Inspiration

The name Ordsnok combines the Norwegian words ord, meaning “word,” and snok(e) meaning to search around for something hidden. It captures exactly what the game is about: examining clues, testing possibilities, and uncovering the word one letter at a time.

The idea began with the daily word puzzle in my local newspaper. Everyone guesses the same word, and my family quickly turned it into a friendly competition: who could solve it first and who needed the fewest attempts?

We have always shared our results using emoji grids like this:

⬜️🟩⬜️⬜️🟨
⬜️🟩🟩🟩⬜️
⬜️🟩🟩🟩⬜️
🟩🟩🟩🟩🟩

That simple grid tells the story of a game without revealing the answer. However, our competition was scattered across screenshots and group chats, with no shared history or easy way to see who was leading. I built Ordsnok to turn that family ritual into a complete experience. One place to play, compare results, and keep the friendly rivalry going.

What it does

Ordsnok gives every player the same daily word puzzle. Once someone finishes, they can compare spoiler-free results with friends and family through private groups, daily rankings, and weekly leaderboards.

Players can maintain streaks, follow personal statistics, and use hints when they get stuck. When one puzzle is not enough, they can play unlimited random games with five-, six-, or seven-letter words. Every result can also be shared as a spoiler-free image, preserving the emoji-grid tradition that inspired the project.

How I built it

I built Ordsnok in Flutter, using one codebase to deliver a consistent experience across iOS and Android. Supabase powers accounts, server-authoritative daily games, statistics, private groups, leaderboards, and entitlement records.

I integrated RevenueCat to handle localized store offerings, consumable hint packs, lifetime ad removal, purchase restoration, and the differences between Apple and Google’s purchase systems.

Purchases are never trusted based only on what the app reports. Verified RevenueCat webhooks update an authoritative entitlement ledger in Supabase, making purchases idempotent and keeping balances consistent across account changes, reinstalls, delayed events, and restorations.

Challenges and lessons

Building the puzzle grid was the straightforward part. The real challenge was turning it into a production-quality product. That meant handling onboarding, accessibility, localization, notifications, offline random games, online daily games, account transitions, pending purchases, cancellations, and reliable restoratio all without making a simple word game feel complicated.

RevenueCat removed much of the platform-specific purchase work, but I learned that dependable commerce still requires careful identity management, asynchronous reconciliation, and honest UI states while transactions are processing.

My biggest product lesson was that retention does not necessarily come from adding more game modes. It comes from giving players people to return to. The daily word starts the ritual, but the shared competition is what makes it meaningful.

Built With

Share this project:

Updates

Submission history