A tool to write NY Times style crosswords. Deployed site
With WordNerd, you can start from a blank rectangular grid, fill in the black squares, answers and corresponding clues, save drafts, and even export other formats. The user's homepage lists their draft puzzles and completed puzzles.
Some of the highlights of the editor page are:
-
As you add black squares (by typing a period), by default they will automatically fill in to make the grid rotationally symmetric, which is the convention in published puzzles (this can be switched to other types of symmetry or turned off at any time).

-
The numbered cells and corresponding slots for across and down clues update instantaneously.
-
Rebus entries (cells that sneakily contain more than one character) can be added. Circled cells are also common in crosswords, and these can also be easily toggled.
-
Basic stats like word/letter counts are also updated in real time.

-
Puzzles can be exported to Across Lite format (a common native cross word solving application) to send to a friend to solve or print out. Finally, the user can download a pdf that meets the format required to submit to the New York Times
If you want to run the site locally, first clone this repo and change directories into it:
git clone https://github.com/Crossword-Editor/crossword-editor.git
cd crossword-editorWe use pipenv to manage the Python virtual environment, which you can find information about at https://pipenv.pypa.io/en/latest/.
Once pipenv is installed, run pipenv install to set up the virtual environment.
If successful (the installation of psycopg2 sometimes requires some troubleshooting), then run pipenv shell to activate the virtual environment.
Finally, copy the sample .env file:
cp config/.env.sample config/.envThe puzzle instances and user data are stored in a Postgres database. Assuming Postgres is set up on your computer, the following sets up the database to match the ./config/.env.sample.
createuser -d editor
createdb -U editor editorIf you prefer to replace 'editor' be another name for the user and database, make sure to update .env accordingly.
Since we're using a new database, we need to migrate:
python manage.py migrateHopefully, you see a lot of OK's. Finally, try running the server to make sure everything is working:
python manage.py runserverIf successful, you should see a message in the terminal informing you what localhost address to visit.