A library for solving Wordle.
Simple Flow:
---
config:
theme: redux-dark
look: handDrawn
layout: fixed
---
flowchart LR
CORRECT["Correct Letters"] --> REQUEST["Request"]
MISPLACED["Misplaced Letters"] --> REQUEST
EXCLUDE["Excluded Letters"] --> REQUEST
REQUEST --> ENGINE["Engine"]
ENGINE --> RESPONSE["Response"]
RESPONSE --> WORDS["Possible Words"]
| Prerequisite | Note |
|---|---|
| .NET10 SDK | .NET10 or greater required. Check current .NET version dotnet --version. Download .NET10 from the official download page. |
| Docker | Download Docker from Docker Get Started. |
| PowerShell | PowerShell (pwsh) required. Check current version pwsh --version. Download PowerShell from PowerShell Releases. |
The Wizdle core library in the Wizdle project is responsbile for translating the request into a list of possible Words.
var wizdleEngine = new WizdleEngine(logger);
var request = new WizdleRequest
{
CorrectLetters = "....t"
MisplacedLetters = "..rs.",
ExcludeLetters = "haebu",
};
WizdleResponse response = wizdleEngine.ProcessWizdleRequest(request);
// response.Words: ["skirt", "snort", "sport"]Available on:
The Wizdle Console application allows us to access all the functionality of the Wizdle library via the CLI.
More information can be found in the Wizdle.Console project
Command:
./Wizdle.Console.exe solve --correct "....t" --misplaced "..rs." --exclude "haebu"Response:
Processing WizdleRequest: CorrectLetters: "....t" MisplacedLetters: "..rs." ExcludeLetters: "haebu"
Mapping WizdleRequest: CorrectLetters: "....t" MisplacedLetters: "..rs." ExcludeLetters: "haebu"
Mapped SolveParameters: CorrectLetters: "????t" MisplacedLetters: "??rs?" ExcludeLetters: "haebu"
Found 3 Word(s) matching the criteria.
Found 3 Word(s) matching the criteria.
skirt
snort
sport
The Wizdle WPF application allows us to access all the functionality of the Wizdle library via a GUI on Windows.
More information (and installers) can be found in the Wizdle.Wpf project.
The Wizdle Api Service contains a deployable API instance of the Wizdle library.
More information can be found in the Wizdle.Api project
Summary: Processes a Wizdle request in an attempt to solve the possible words.
Content-Type: application/json
| Name | Type |
|---|---|
correctLetters |
string |
misplacedLetters |
string |
excludeLetters |
string |
Example:
{
"correctLetters": "a__le",
"misplacedLetters": "t",
"excludeLetters": "xyz"
}Status Code: 200 OK
| Name | Type |
|---|---|
messages |
array of string |
words |
array of string |
Example:
{
"messages": ["Found 2 Word(s) matching the criteria."],
"words": ["apple", "angle"]
}The Wizdle Web contains a deployable Blazor web app instance of the Wizdle library (hosted on the new dotnet Aspire platform & Docker).
More information can be found in the Wizdle.Web project
A Discord bot hosting all the functionality of the Wizdle library, users can integrate the bot into their Discord servers.
Invite link for Discord.
- Unit Testing
- Wizdle.Unit.Tests
- Wizdle.Api.Unit.Tests
- Wizdle.Web.Unit.Tests (using bUnit)
- Wizdle.Wpf.Unit.Tests (Windows only)
- Integration Testing
- Functional Testing
- Wizdle.Api.Functional.Tests
- Wizdle.Web.Functional.Tests (using Playwright)
- Wizdle.Functional.Tests (solving Wordle end-to-end)
- Performance Testing
- Wizdle.Performance.Tests (using BenchmarkDotNet)
- Accessibility Testing
- Wizdle.Web.Functional.Tests (using axe-core)
- Mutation Testing
This project includes a Makefile to simplify common development tasks. Run make help to see all available commands.
| Command | Description |
|---|---|
make help |
Show all available make commands |
make build |
Build the entire solution in Release mode |
make test |
Run unit and integration tests |
make build-api |
Build the Wizdle.Api Docker image |
make build-web |
Build the Wizdle.Web Docker image |
make build-discord |
Build the Wizdle.Discord Docker image |
make build-all |
Build all Docker images (api, web, discord) |
make compose |
Start all services using docker-compose in detached mode |
make stop |
Stop all running Docker containers |
make stop-volumes |
Stop containers and remove associated volumes |
make logs |
Show and follow logs from all Docker containers |
make restart |
Stop containers, rebuild all images, and restart services |
make clean |
Clean build artifacts, TestResults, BenchmarkDotNet.Artifacts, and prune all Docker resources |
make docker-prune |
Prune unused Docker resources (images, containers, volumes) |
make trust-cert |
Trust the .NET HTTPS development certificate |
make token |
Generate a random 32-character token for API keys |
make tools |
Restore dotnet tools |
make mutate |
Run Stryker mutation testing |
make perf |
Run performance tests (BenchmarkDotNet) |
make playwright |
Install Playwright browsers |
make solve |
Attempts to solve Wordle using Wizdle |
make test-functional |
Run all functional tests |
make test-all |
Run all tests (unit, integration, functional, solve) |
-
Build the solution:
make build
-
Run tests:
make test -
Generate tokens for your
.envfile:make token
-
Build all Docker images:
make build-all
-
Start all services:
make compose
-
View logs:
make logs
-
Stop services:
make stop
Lyndon, did you just spend all this time working on a tool to cheat wordle... rather than actually just solving the word?!


