Inspiration

First, we were inspired by regular New York Times crosswords, which are old, sort of retro games. But to add a modern spin we added a competitive PVP aspect inspired by blockout bingo, a game where two players complete in challenges on a bingo board, and when one player completes a bingo challenge, that square is blocked off from the opponent. In our game, when one person finds a word, the other is blocked from guessing the same one.

How we built it

The project's frontend was written in JavaScript, HTML and CSS using React for all UI elements and Vite to run the server locally. A backend written in Python using Flask runs concurrently to provide parsing for .puz files.

Challenges we ran into

  • Crosswords are not a built-in component in web browsers, so we had to build the UI from the ground up. Ensuring all of the navigation logic properly interacted together ended up proving quite a challenge.
  • Very few libraries existed for parsing .puz files. The most available one was a Python library, so we opted to set up a Flask backend and sent POST requests to it from our JS frontend.
  • Creating the massive retro background image required a long process of pixel art design.

What we learned

The most difficult aspect of the app was refactoring the first versions of the project to a workflow where we could efficiently add the features we wanted. React is highly dependent upon pure functions for organizing code, which we did not fully realize until we ended up with a 900-line application file. If we were to attempt this in the future, more time would definitely be spent planning our implementation before beginning to code.

What's next for CrossCompete

We want to set up a dedicated web domain to host our product. We also hope to add an option for players to connect and play remotely in live time.

Share this project:

Updates