scrabble-solver
v2.15.6
Published
Scrabble Solver 2 - 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.
Downloads
491
Maintainers
Readme
scrabble-solver
Table of contents
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
- Find and download a flag representing the locale in an SVG format
- I usually find them at https://commons.wikimedia.org/
- Rename the file to
FlagXX.svg
and put it in packages/scrabble-solver/src/icons - Export the SVG file in packages/scrabble-solver/src/icons/index.ts
- Add IETF language tag for the new locale in packages/types/src/Locale.ts
- Rebuild the types package
npm run build -w @scrabble-solver/types
- Add locale configuration in packages/scrabble-solver/src/i18n/constants.ts
- Update locale-detecting code in packages/scrabble-solver/src/lib/detectLocale.ts
- Add game configs for the new locale in packages/configs/src/languages
- Add an export for these locale configs in packages/configs/src/languages/index.ts
- 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
- Copy any existing file, e.g.
- Add an entry for the translations in packages/scrabble-solver/src/i18n/i18n.ts
- Add a function to fetch the list of words in the new locale in packages/word-lists/src/getWordList.ts
- Add a function to fetch the word definition in the new locale in packages/word-definitions/src/crawl.ts
- Add a function to parse the word definition crawled in the previous step in packages/word-definitions/src/parse.ts
- Bonus points for adding tests in packages/word-definitions/src/parse.test.ts
Tech stack
- TypeScript
- Node.js
- Next.js
- Express
- Workbox
- React
- Redux
- Redux Toolkit
- Redux-Saga
- SCSS
- CSS Modules
- include-media
- Lerna
- Cypress
- Jest
- ESLint
- Prettier
Related projects
Lexatious
The user interface and source code for the web front end of Lexatious is based on Scrabble Solver.
- Web: https://lexatious.com
- GitHub: https://github.com/ericgjackson/lexatious_web