Table of Contents
I got the idea for BIRDLE because I was getting a little bit dismayed at how negative my timeline was - particularly when it comes to news headlines.
Given the popularity of Wordle at the time, I thought it might be cool to make a similar type of daily guessing game, but where the thing to be guessed is a four-word phrase, with each word being taken from a popular tweet. The player is shown four tweets, and needs to guess the missing word from each, thus revealing the mystery phrase.
I wanted each daily phrase to be something nice and wholesome, something that would inspire you for the day. Positivity can be found anywhere if you look hard enough!
I am submitting this project to the "content discovery" category. All users get the same BIRDLE puzzle each day - the tweets they see are not necessarily from people they follow, and therefore by engaging with this game they have the chance to discover new Twitter users that they might not currently engage with.
This /backend
folder contains code for the cloud functions that run daily on Google Cloud Scheduler. It includes
- A
scrape
function to grab the day's tweets from the allow-listed Twitter accounts using the v2/search
API. - A
solve
function to autogenerate a series of puzzle options. After this function runs I have an hour-long window to manually pick one of the options to serve as the day's puzzle, however, if I do not do this then it will automatically run anautoPickPuzzle
function which will just grab the most suitable one.
The database that the app runs on is a Postgres instance hosted by Supabase.
The /frontend
folder contains the main Next.js app. Try running:
cd frontend; npm i; npm run storybook
in order to view a locally hosted version of the app running on mocked data. This also features a few common user-journeys or "stories" that serve as the basis of the frontend e2e tests.
This folder is .gitignore
'd. However, I have an extra admin app that I can use for managing things like:
- the Twitter handles that can form the basis of the puzzles
- selection / overriding of the day's puzzle
- adding / removing possible four-word phrases