Inspiration

I've been solving the New York Times daily crossword with my girlfriend every day for the last 5 years. We've been talking about submitting our own one day, but we have no practice. and frankly building crosswords is very difficult.

We built this app to gain practice in building crosswords, and to share our work with friends to get some feedback and some friendly competition going.

What it does

Crossword Builder does more or less what you'd expect. It's a game that allows you to create crossword puzzles (from 5x5 to 15x15 or any custom size), share it with friends, and compete to solve your friends' puzzles.

We tried to make this a beginner friendly crossword coach. I think it is very important that the time from "I downloaded this app" to "I published my first crossword" can be 5 minutes or less. To achieve this, we have an "assisted" crossword creation mode that walks you through selecting some key words and helps you build the grid automatically or semi-automatically. I personally find it significantly easier modifying a grid that has been laid out rather than starting from a fully empty grid, which can feel really overwhelming.

There are also AI assisted clue generation features among other things. All of these really help you go from 0 to 1 as fast as possible, so you can test out an idea and iterate instead of being stuck and overwhelmed, and eventually give up (which has so far been my crossword building experience).

How we built it

We built this entirely in native Swift + SwiftUI. For our backend we are using firebase, as it is the platform we've built all of our other apps on. Our databases, authentication, and AI features are all provided by the Firebase SDKs. For purchases & paywalls, we use RevenueCat, which we also use heavily in all of our other apps. We're huge fans of both Firebase & RevenueCat.

We of course used claude code and other AI tools to help with the development, but since we are a team of developers, the app is largely human coded & reviewed and AI asisted in its development.

Challenges we ran into

Autofilling a crossword grid is very very difficult apparently. My first attempt took 3 minutes to fill a 5x5 grid. This difficulty compounds when you decide to allow for "seed words" to be input, and remove the hard grid size constraint. This took a lot of tries to get right, and admittedly it can still be improved, but I'm very happy with how it turned out.

Accomplishments that we're proud of

Continuing on the challenge from before, our new algorithm can fill not one but many grids of different sizes with a variety of grid layouts and words in a matter of seconds. We really obsessed over this one aspect of the game which I think is very very important for that first 0 to 1 "aha" moment. On this journey we read a bunch of papers on the matter, implemented and modified open source algorithms, and even briefly dabbled in shipping a bunch of rust code with the app. Ultimately I'm very proud of how this turned out.

What we learned

We learned a lot, honestly. For starters I learned that I know very little about crosswords and their many unexpected rules that make even laying out a grid very difficult. This project was also very algorithmically challenging, which was unexpected. Along the way we learned a lot about Constraint Satisfaction Problems in general, and a lot of ways to go about finding solutions to these. I've always been impressed by people who build the crosswords we solve everyday, but this experience has given me an even deeper appreciation for the craft.

This was also the first game app that we all worked on. Although this is not really a 3D real-time game with fancy graphics by any means, i was still a very interesting experience thinking about the users' gameplay experience.

What's next for Crossword Builder

We are planning on significantly improving our AI "assist" functionality to not only suggest completions / clues / grids, but tto also give the user feedback on the words & clues they put down, almost like a crossword coach. As our userbase grows in size, we also want to work on some user discovery & follow features so there is a robust crossword building & solving community in the app.

Built With

Share this project:

Updates

Submission history