Skip to content

Spelling Bee

Back-end Front-end

Spelling Bee Logo

The prototype

Naming

Haven't settled on a name yet, so there's probably still some outdated references to "Abielle D'Ortographe" or "International Spelling Bee"

What is it

This is a 'fork' of the New York Times spelling bee game, designed to work with any language, ability to play and review past games, accounts to save progress, dark mode, open source, and create custom games.

The stack

DB

I'm currently using CouchDB because it was easy to set up, and is easier to do quick development as someone who hates SQL

Back-end

This is my favorite part, but unfortunately only ended up being around 20% of the project. It's built in Rust on the Rocket framework.

Front-end

Let me preface this part by saying, I hate front end, and art, and making things look good, as you may be able to guess from a Rust user. I chose Vue because I have experience with it, and TypeScript because well... see above. If I ever start a blog tab, expect the first one to be about why CSS sucks.

Progress

So far there isn't much implemented. Ideally if you are seeing this, there is at least feature parity with the original, except maybe progress saving, but everything is moving fast right now, so maybe not.

Try the proof of concept:

Spelling Bee proof of concept That version has just enough features to basically reassure me I was on the right path and could get something working. The next front end version is being rewritten from the ground up.

Todo

Layout design

  • Make it look nice
  • draw a design [[Spelling Bee/Spelling bee front end layout]]
  • Make cells look clickable
  • Toolbar
    • date selector
    • Side menu
  • Comb card
    • Comb
    • Guess box
  • Progress card
  • Found words card
  • dark mode
  • mobile layout
  • guess feedback
  • make it PST
  • current sums
  • store progress in cookies
  • store dark mode pref in cookies
  • make date selector work
  • past daily games
    • Backend
  • shuffle outer letters
  • make word list less egregious
    • limit word list to only ~10,000 most used words for langs that I can find such data
  • make click animation for cells
    • click animation for click
    • apply click animation when typed as well
  • mobile move list below comb
  • make cells clickable
  • make invalid letters red or something
  • more languages + selector with language code routes
  • make language dropdown not selectable
  • accounts
  • custom word lists
  • make rust app respond with status code on failures, not just 200: error
  • Calls to NTP server from rust app occasionally error out?
  • make only existing games selectable
  • automate game generation (currently just a CRON job for every lang)
  • fix css on mobile
    • score count box
    • date select should not be popover when in dialog
    • adjust font sizes
    • fix main card too big on near-square resolutions
    • adjust vh for address bar - should not be able to scroll
  • Put that shit in Tauri
    • Linux
    • Mac (begrudgingly)
    • Windows (begrudgingly)
    • Android
    • IOS if I can find something that isn't the apple store
  • Clean front-end code base
  • add more langs
  • show word list on mobile
  • review past games
  • fix score card css
  • progress bar for completion
  • icons in calender days to show relative progress (started, 90%, nothing)
  • intercept back button on mobile android
  • give up button on mobile should open show words
  • fix potential out of bounds error on panagram finder for game generation (if the random number is too close to the end and it doesn't find a panagram before reaching the end of the list, it should wrap around.) This would also fix distribution skew towards later panagrams, but not the skew towards panagrams with higher spacing before them. That would require only checking random words.