Küşt is an open-source chess application built with Flutter and Dart. It uses dartchess for chess rules and position handling, and Stockfish as the engine for bot gameplay and position evaluation.
The core idea: chess analysis should help you improve, not just tell you a move was bad. Post-game analysis with move classification and explanations is on the roadmap — right now Küşt is focused on being a genuinely good place to play.
Play complete games against Stockfish-powered bots at adjustable difficulty levels. Bot strength is mapped from an Elo rating to a Stockfish skill level (and UCI Elo where supported), so you can pick an opponent that suits where you are as a player.
dartchess maintains the chess position and validates moves. Stockfish handles engine calculation for the bot's responses.
No engine, no wifi excuse. Play a full game locally on one device with a friend, no Stockfish dependency required.
Pick from preset time controls (blitz, rapid, with or without increment) before starting a game, with a live clock for both sides during play.
During a game you can undo your last move or request a hint. Hints run Stockfish at full strength on a short time budget and highlight the suggested origin and destination squares. Undo steps back both the player move and the preceding bot move so the position stays consistent.
Toggle practice mode to play more freely while still getting the full board and engine experience — good for exploring lines without it counting against your rating.
Küşt tracks your own Elo-style rating locally (starting at 1200), updates it after games against bots, and shows a rating-change badge in the post-game recap.
An optional live evaluation bar shows how the position is trending as the game progresses.
The application is built around three components.
Handles chess logic: board position, legal move generation, rule enforcement, FEN and PGN parsing, and position representation. Chess rules are kept entirely separate from the UI and engine layers.
Used for two purposes:
- calculating moves for the bot opponent during gameplay
- powering hints and the live evaluation bar
Stockfish does not enforce chess rules. dartchess owns the game state and legal move validation. Stockfish only sees FEN strings.
Stockfish currently runs on Android and iOS. On unsupported platforms, Küşt falls back to local pass-and-play instead of failing silently.
| Technology | Purpose |
|---|---|
| Dart | Application language and core logic |
| Flutter | UI and cross-platform application shell |
| dartchess | Chess rules, legal moves, FEN/PGN, position state |
| Stockfish | Bot gameplay, hints, and live evaluation |
| Riverpod | State management |
| go_router | Declarative navigation |
| audioplayers | Move and game event sounds |
| shared_preferences | Onboarding state and settings persistence |
| Hive | Local rating storage |
| flutter_svg | SVG asset rendering |
- Flutter SDK
- Dart SDK compatible with the Flutter version
- Git
- A working Stockfish integration for your target platform (Android/iOS)
Stockfish setup differs between Android, iOS, and desktop. Follow the platform-specific configuration in the project when setting up the engine.
git clone https://github.com/Shapak-Apps/kust.git
cd kust
flutter pub get
flutter run- Play against Stockfish bots
- Adjustable bot difficulty
- Move undo
- Hints during play
- Local pass-and-play mode
- Time controls
- Local Elo-style rating tracking
- Live evaluation bar
- Puzzles
- Complete game history
- FEN and PGN support
- Local game storage
- Post-game analysis
- Inaccuracy, mistake, and blunder detection
- Missed opportunity detection
- Explanations for critical moves
- Personal mistake pattern detection
- Opening performance analysis
- Tactical training based on previous mistakes
- Endgame analysis
- Progress tracking
- Import games for analysis
- Export games as PGN
Küşt is open source and contributions are welcome.
Fork the repository, create a branch, make your changes, and open a pull request.
Before submitting, format and test:
dart format .
flutter testChess software has many edge cases. Changes involving chess logic should include tests where possible. Critical cases include check, checkmate, castling, en passant, promotion, FEN and PGN parsing, engine evaluation, and move classification.
Küşt is licensed under the GNU General Public License v3.0. It uses Stockfish and dartchess, both GPL-3.0.
Küşt builds on:
Follow the licensing and attribution requirements for each dependency.
