NYT Crossword Plus
A stat sheet
January 2022
The Daily Mini has been a race my friends and I have been playing against each other in for years. Being runners, we love both competition and data, so we have always wanted a more advanced leaderboard than the one on the NYT. So I created NYT Crossword Plus.
Method
This project is made up of several parts:
- A website for viewing data
- An API for updating and reading data
- A webscraper that runs daily
- A Discord messaging bot
Scraper
When I first started, I created a simple Chrome extension that updates a database whenever I load the leaderboard page. This depended on me to update the times manually, so it was not an ideal solution for a webscraper. Luckily a friend of mine managed to get the webscraper to work automatically, so our times can always be recorded. It now runs on Google Cloud once daily before the crossword closes.
Webhost
I decided I wanted to experiment with NextJS for this project. NextJS has a few features I was excited to use:
- Generated pages from folder structure, which I found helpful for making
/group/<name>
routes - Serverless functions built in, which was important for making a robust API
- Server Side Props, I ended up not using these because it increased the page load time, however I hope to use this feature at another point in the future
The home page contains some info and links, the more interesting page is the group view. You can see a test group online here.
Discord Bot
To make the Discord bot, I decided to use Autocode, because it is free and easy to setup. All I had to make was an endpoint for it to read daily stats from, and the rest was just formatting.