A Flutter word-search puzzle game β five hand-tuned difficulty levels, drag-to-select gameplay, and progress that's saved right on your device.
WordQuest is a word-search puzzle game built entirely in Flutter. Find every hidden word in a letter grid by pressing and dragging in a straight line β horizontal, vertical, or diagonal, forwards or backwards β across five levels that get progressively larger and trickier.
Puzzles are generated on-device, while best scores and times are persisted locally using shared_preferences.
Repository: github.com/techAsmita/WordQuest
Core gameplay
- Press-and-drag letter selection across straight lines (horizontal, vertical, diagonal)
- Words can be hidden forwards or backwards depending on the level
- Puzzles are procedurally generated per level, with a fresh grid layout on every replay
- Scoring: 10 points per letter for each newly found word
- Hint system: 3 hints per level, each one briefly reveals an unfound word for a 15-point deduction
Difficulty ladder
Five levels, each widening the grid and unlocking new mechanics:
| Level | Name | Grid | Words | Word length | Diagonals | Reversed words |
|---|---|---|---|---|---|---|
| 1 | Starter | 6Γ6 | 4 | 3β4 | β | β |
| 2 | Easy | 7Γ7 | 5 | 3β5 | β | β |
| 3 | Medium | 8Γ8 | 6 | 4β6 | β | β |
| 4 | Hard | 8Γ8 | 7 | 4β7 | β | β |
| 5 | Expert | 9Γ9 | 8 | 5β8 | β | β |
Levels unlock sequentially β clear one to open the next.
Feedback & persistence
- Light haptic + system-sound feedback on valid/invalid selections, hints, and level completion (toggleable in Settings)
- Best score and best time are saved per level and shown on replay
- "Reset progress" clears all saved records with a confirmation prompt
- Light and dark themes that follow the system setting
| Home | Level Select |
![]() |
![]() |
| Gameplay β Level 1 (Starter), cleared | Gameplay β Level 5 (Expert), cleared |
![]() |
![]() |
| Layer | Technology |
|---|---|
| Framework | Flutter |
| Language | Dart (SDK ^3.2.0) |
| Routing | go_router |
| Typography | google_fonts |
| Local persistence | shared_preferences |
| Icons | cupertino_icons |
| Testing | flutter_test |
| Static analysis | flutter_lints |
No backend, database, or external API is used β WordQuest is a self-contained Flutter client.
Prerequisites
- Flutter SDK
3.2.0or newer - Git
git clone https://github.com/techAsmita/WordQuest.git
cd WordQuest
flutter pub get# Run on Chrome (web)
flutter run -d chrome
# Or run on a connected device / emulator
flutter run
# Run the test suite
flutter testThe live demo is a static build hosted on Vercel:
The site is not built on Vercel's servers β Vercel doesn't have the Flutter SDK installed. Instead, the web build is produced locally and the compiled output is what gets deployed:
flutter build web --releaseThis generates a static build/web directory (HTML, JS, CSS, and assets) which is deployed as-is β Vercel just serves those files, no Flutter build step required on its end.
Expand to view the folder layout
lib/
βββ main.dart # App entry point, theme + router setup
βββ core/
β βββ router/ # go_router route definitions (AppRouter)
β βββ storage/ # SharedPreferences-backed progress & settings repositories
β βββ theme/ # Light/dark AppTheme
β βββ audio/ # GameFeedback (haptics + system sounds)
β βββ constants/ # Shared sizes and strings
βββ features/
βββ home/ # Landing screen
βββ levels/ # Level select screen
βββ game/
β βββ domain/ # GameController, PuzzleGenerator, LevelCatalog, WordBank
β βββ presentation/ # Game screen, letter grid, word list, score bar
βββ settings/ # Sound toggle, reset progress
Feature folders are split into domain (game logic, pure Dart, unit-tested) and presentation (widgets/screens) where the feature is complex enough to warrant it.
Not implemented today β noted here as possible directions, not commitments:
- Custom or user-submitted word lists / themed word packs
- Online or shareable leaderboards (would require adding a backend)
- Additional grid sizes or levels beyond the current five
- Custom sound effects in place of the current system sounds
- Localization for languages beyond English
Asmita Roy github.com/techAsmita
Built as a portfolio project to demonstrate Flutter architecture, game-state management, responsive UI, persistence, and deployment.



