

1 / 3About
Overview
Spriglane is a complete, original arrow-escape puzzle game built with Flutter. Tap a coloured path and it slides out in its arrow's direction if nothing blocks the way; clear the board to finish. It ships with 1,000 campaign levels in 50 chapters, 80 shape puzzles, a daily puzzle with streaks and an Endless mode, plus a small Garden Club economy with 3D animal companions. The Android app is monetised with AdMob rewarded and interstitial ads and a one-time Remove ads purchase; a browser build comes from the same code. Every level is generated by the included algorithm and proven solvable by the tests.
Key features
Puzzles
- 1,000 campaign levels in 50 garden chapters; each chapter climbs Easy → Hard (9×9 up to 30×30 finales) and the next starts gently again
- 80 shape puzzles in 8 chapters (heart, cat, rabbit, butterfly, fish, flower, star, turtle) where the arrows fill an original silhouette
- Daily puzzle from the local date with current and best streaks; Endless in Breezy 7×7, Winding 10×10 and Intricate 12×12
- Undo, restart, hints, pinch and button zoom with panning, keyboard shortcuts (H, U, R, Z)
- 1–3 stars per puzzle, best results kept, unfinished boards resumed per mode
Progression & polish
- Responsive Home, a winding garden map per chapter with stars and locks, and a 3-step illustrated tutorial
- 10 keepsakes (achievements), animated completions and shape-chapter celebrations, synthesised sound effects
- 3 board themes, reduced-motion support, screen-reader labels for every path, phone/tablet/desktop layouts
Garden Club
- Leaves earned from new or improved results (12/16/20), optional double leaves
- An animated 3D garden with four 3D companions to unlock (cat, panda, fox, frog) and firefly lanterns
- A seven-day gift calendar (+20 to +50 leaves) that never resets for a missed day
- Result card and portable backup code to move progress to another device
What's included
- Full Flutter source code for Android and Web (about 7,400 lines of Dart)
- 93 unit and widget tests that prove all 1,000 campaign and 80 shape boards are solvable
- README with a step-by-step guide: rebranding, Firebase, AdMob, Families Policy notes, Remove ads IAP, Remote Config, signing, web build and troubleshooting
- Privacy policy template, Remote Config template (ads_service), key.properties signing template, asset provenance and third-party notices, LICENSE and CHANGELOG
- All secrets replaced with placeholders; it builds out of the box with Google test ad IDs and a debug-key fallback
Tech stack
- Flutter 3.47+ / Dart 3.13 (tested on Flutter 3.47.4), shared_preferences storage
- Ads: google_mobile_ads 8.0 (AdMob + UMP); IAP: in_app_purchase (Google Play Billing)
- Firebase: Core, Analytics, Crashlytics, Remote Config (Android only); audioplayers
- DM Sans and DM Serif Display fonts (SIL OFL); original 3D renders and code-drawn art
- Android: AGP 9.1, Kotlin 2.4, Gradle 9.3, Java 17, Flutter default min/target SDK
Requirements
- Flutter SDK 3.47 or newer, Android Studio or VS Code, JDK 17
- Your own Firebase project (optional to run) and AdMob account; a Google Play Console account for the Remove ads product
- No iOS project is included (Android and Web only)
Setup in minutes
- Run flutter pub get, then flutter run -d chrome to play immediately
- Run flutterfire configure to connect your Firebase project
- Change the package id, app name and icon (README section 7)
- Add your AdMob App ID and rewarded/interstitial units, publish the ads_service Remote Config parameter and create the remove_ads product
- Add your keystore to android/key.properties and run flutter build appbundle --release with your ad IDs
Monetization (ads/IAP)
- Rewarded ads only when the player chooses them (+3 hints, double leaves); rewards granted only on Google's earned-reward callback
- Interstitials only after a finished level when the player taps Next, with frequency cap and cooldown; nothing during play, no banners
- Requests are child-directed, under the age of consent, rated G and non-personalised; the advertising-ID permission is removed
- A release guard blocks release builds until real AdMob IDs are supplied, so test ads never ship by mistake
- Remote Config frequency control, ad and purchase revenue events in Firebase Analytics, Crashlytics
- Remove ads one-time purchase with restore
Support & updates
Support is provided through the Aadhya Infotech DevStore: https://www.aadhya-infotech.com/DevStore/contact. Bug-fix updates for this package are published on the DevStore. The interface is English only; there are no online features (accounts, cloud save or leaderboards) — progress is stored on the device and can be moved with a backup code.
Release history
- v0.8.010/5/2026
Spriglane v0.8.0: first full source code release; unfinished Garden Club events, weekly board, friend codes, quests, unrendered decorations and partial translations removed. See CHANGELOG.md.