Mindcross

A word-crossword game for Android. Swipe letters on a wheel to fill a crossword grid, built from a dictionary pipeline I wrote.

Role
Built the game, the generator and the tools
Where
Tab Techify
Year
2026
Stack
Flutter, Dart, RevenueCat, Firebase
Status
In development

What it is

Mindcross: Word Puzzle Game is published by Tab Techify. You get a wheel of letters and a crossword grid, and you swipe across the letters to spell the words that fill it. There's a classic level ladder, a Daily Puzzle and paid theme packs.

Every puzzle comes from a generator I wrote in pure Dart. The dictionary, levels and checks are all built by command-line tools in the same repo.

What I did

  • Built the dictionary pipeline: 179,320 accepted words packed into a 526 KB DAWG, 24,101 answer words ranked by how common they are, and a blocklist.
  • Wrote the puzzle core in pure Dart: seeded RNG, grid packer, generator and the judge that checks swiped words.
  • Built the Flutter app: letter wheel, grid, daily rewards, streaks, the shop and the profile screen.
  • Theme packs and coin packs through RevenueCat and Google Play Billing, with no sign-in needed to buy.
  • Play Games achievements, leaderboards and cloud save, plus opt-in rewarded ads with a consent form.
  • Local reminders for the Daily Puzzle and streaks, a shareable result card, and Firebase Analytics events.

Hard parts

The same puzzle on every platform

One generator runs natively in the app and compiled to JavaScript elsewhere, and both must produce identical puzzles from the same seed. JavaScript numbers are doubles, so the RNG sticks to 32-bit-safe arithmetic, and every sort has a tie-break so equal keys can't come out in a different order. A parity tool compares 10,000 puzzles byte for byte.

Paid packs that are actually harder

The pack builder scores each level and holds it to a difficulty ramp. Levels that fall short get more words until they qualify, and hand-picked levels that still miss stop the build. No grid holds both a word and its plural, and a level's title can't give away a word in its grid.

A dictionary players won't argue with

Accepted words and answer words are separate lists, so obscure words count as bonus finds but are never required. Source word lists are pinned by sha256, so a changed upstream file stops the build until someone reviews it. A test harness runs 10,000 random puzzles and the 300-level campaign before anything ships.

Not public on Google Play yet. Screens are rendered from the app's screen tests.