/scrabble-solver

Free, open-source, cross-platform, multi-language analysis tool for Scrabble, Super Scrabble, Literaki, and Kelimelik. Quickly find the top-scoring words using the given board and tiles. Available in English, French, German, Persian, Polish, Romanian, Spanish, and Turkish.

Primary LanguageTypeScriptOtherNOASSERTION

Scrabble Solver logo

Free, open-source, cross-platform, multi-language analysis tool for Scrabble, Super Scrabble, Literaki & Kelimelik

Quickly find the top-scoring words using the given board and tiles

Available at https://scrabble-solver.org in 8 languages

You can run it on your machine: npx scrabble-solver@latest

Flag of United Kingdom Flag of United States Flag of France Flag of Germany Flag of Iran Flag of Poland Flag of Romania Flag of Spain Flag of Turkey

Version License Node version

Build Jest Tests Cypress Tests ESLint

Screencast GIF showing user interface when solving for oxyphenbutazone, which is a top-scoring word in English version of Scrabble

scrabble-solver

Table of contents

  1. Dictionaries
  2. Run
  3. Uninstall
  4. Develop
    1. Setup
    2. Run app dev server
    3. Rebuild the entire project
    4. Rebuild a single package
    5. Add a new language
  5. Tech stack
  6. Related projects
  7. Media

Dictionaries

Language Word list Word definitions Highest-scoring word
🇬🇧 English 💾 SOWPODS Merriam-Webster oxyphenbutazone (1458)
🇺🇸 English 💾 TWL06 Merriam-Webster oxyphenbutazone (1458)
🇫🇷 French 💾 ODS8 CNRTL schizothymiques (1566)
🇩🇪 German 💾 hippler/german-wordlist DWDS polytoxikomanem (1512)
🇮🇷 Persian 💾 MansourM/persian-to-persian-dictionary واژه یاب ‏(756) اگزیستانسیالیست
🇵🇱 Polish 💾 SJP.PL SJP.PL współposiądźmyż (1512)
🇷🇴 Romanian 💾 LOC 5 dexonline luxemburghezele (1944)
🇪🇸 Spanish 💾 FILE 2017 Diccionarios.com flexibilizabais (1323)
🇹🇷 Turkish 💾 Turkish Türk Dil Kurumu Sözlükleri dövüşmeyeceğime (1593)

Run

You can run Scrabble Solver on your machine - all you need is Node.js 20 or later.

npx scrabble-solver@latest

Give it a while to install and download dictionaries. When it's done it will automatically open http://localhost:3333/ in your browser.

Hit Ctrl + C in your terminal to exit the app and shut down the server.

Uninstall

Dictionaries and logs are stored in $HOME/.scrabble-solver. $HOME location is acquired using os.homedir().

rm -rf $HOME/.scrabble-solver

Develop

These steps are required only if you want to make changes to the source code.

Setup

One-time project setup.

git clone https://github.com/kamilmielnik/scrabble-solver.git
cd scrabble-solver
npm install
npm run build

Run app dev server

The following command will serve the app at http://localhost:3000/.

npm run dev

Note: hot code reload works only for the scrabble-solver package. If you make changes to any other package, you will need to rebuild it (see below).

Rebuild the entire project

npm run build

Rebuild a single package

For convenience, here's a list of commands to rebuild every package individually.

npm run build -w @scrabble-solver/configs
npm run build -w @scrabble-solver/constants
npm run build -w @scrabble-solver/dictionaries
npm run build -w @scrabble-solver/logger
npm run build -w @scrabble-solver/scrabble-solver
npm run build -w @scrabble-solver/solver
npm run build -w @scrabble-solver/types
npm run build -w @scrabble-solver/word-definitions
npm run build -w @scrabble-solver/word-lists

Add a new language

  1. Find and download a flag representing the locale in an SVG format
  2. Rename the file to FlagXX.svg and put it in packages/scrabble-solver/src/icons
  3. Export the SVG file in packages/scrabble-solver/src/icons/index.ts
  4. Add IETF language tag for the new locale in packages/types/src/Locale.ts
  5. Rebuild the types package
    npm run build -w @scrabble-solver/types
  6. Add locale configuration in packages/scrabble-solver/src/i18n/constants.ts
  7. Update locale-detecting code in packages/scrabble-solver/src/lib/detectLocale.ts
  8. Add game configs for the new locale in packages/configs/src/languages
  9. Add an export for these locale configs in packages/configs/src/languages/index.ts
  10. Add a translation file in packages/scrabble-solver/src/i18n/languages and fill it with translations
    • Copy any existing file, e.g. english.json and modify it
  11. Add an entry for the translations in packages/scrabble-solver/src/i18n/i18n.ts
  12. Add a function to fetch the list of words in the new locale in packages/word-lists/src/getWordList.ts
  13. Add a function to fetch the word definition in the new locale in packages/word-definitions/src/crawl.ts
  14. Add a function to parse the word definition crawled in the previous step in packages/word-definitions/src/parse.ts

Tech stack

Related projects

Lexatious

The user interface and source code for the web front end of Lexatious is based on Scrabble Solver.

Media