A Flutter mobile application that provides personalized, step-by-step guidance through complex processes. The app delivers adaptive content based on user responses with multilingual support and intelligent logic-based personalization.
π Website: https://aazirani.github.io/guidewizard/
Guide Wizard is currently being used by:
- Bazm - Wedding planning checklist (checklist.bazm.me)
Using Guide Wizard? Let me know and I'll list your implementation here! Open an issue or contact me to be featured.
- Personalized Guidance: Dynamic content adaptation based on user profile and answers
- Step-by-Step Navigation: Intuitive wizard-style interface guiding users through multi-step processes
- Intelligent Logic System: Content personalization using expression-based conditional logic
- Multilingual Support: Full internationalization with dynamic language switching
- Offline Capability: Local database caching for offline access to downloaded content
- Image-Rich Content: Visual guides with image-based questions and task illustrations
- Task Management: Track progress through checklists and subtasks
- Clean Architecture: MobX state management with reactive UI updates
- Material Design: Modern, responsive UI following Material Design guidelines
Before you begin, ensure you have the following installed:
- Flutter SDK (2.0.0 or higher)
- Dart SDK (2.12.0 or higher)
- Android Studio or Xcode (for mobile development)
- Git
This app requires the Guide Wizard Backend to be running. The backend provides the API for content management, logic evaluation, and personalization.
Backend Repository: Guide Wizard Backend
git clone https://github.com/aazirani/guide_wizard.git
cd guide_wizardflutter pub getThis project uses code generation for MobX stores and JSON serialization. Run the build runner:
# One-time generation
flutter packages pub run build_runner build --delete-conflicting-outputs
# Or use watch mode for automatic regeneration during development
flutter packages pub run build_runner watchThe app is configured to connect to http://localhost:8080 by default for local development.
To change the backend URL, edit lib/data/network/constants/endpoints.dart:
class Endpoints {
static const String baseUrl = "http://your-backend-url.com";
// ... rest of the file
}# For Android
flutter run
# For iOS
flutter run
# For a specific device
flutter devices
flutter run -d <device-id>This project follows a clean architecture pattern with clear separation of concerns:
lib/
βββ constants/ # App-level constants
β βββ app_theme.dart # Theme configuration
β βββ endpoints.dart # API endpoints
β βββ preferences.dart # SharedPreferences keys
β βββ strings.dart # String constants
βββ data/ # Data layer
β βββ local/ # Local database (Sembast)
β βββ network/ # API client (Dio)
β βββ sharedpref/ # SharedPreferences helper
β βββ repository.dart # Central data repository
βββ models/ # Data models
β βββ answer/
β βββ question/
β βββ step/
β βββ task/
β βββ sub_task/
βββ stores/ # MobX state management
β βββ content/ # Content store
β βββ language/ # Language store
β βββ theme/ # Theme store
βββ ui/ # UI layer
β βββ splash/ # Splash screen
β βββ home/ # Home screen
β βββ questions/ # Questions screen
β βββ tasks/ # Tasks screen
βββ utils/ # Utility functions
βββ widgets/ # Reusable widgets
βββ main.dart # App entry point
βββ routes.dart # Navigation routes
- Dio - HTTP client for API communication
- Sembast - NoSQL database for offline storage
- SharedPreferences - Key-value storage
- build_runner - Code generation tool
- json_serializable - JSON serialization
- mobx_codegen - MobX code generation
- get_it - Service locator
- validators - Input validation
- xxtea - Encryption
Edit lib/constants/app_theme.dart to customize colors, typography, and other theme properties:
final ThemeData themeData = ThemeData(
primaryColor: Colors.blue,
accentColor: Colors.blueAccent,
// ... customize other properties
);- Add translations to the backend using the admin panel
- The app will automatically fetch and display available languages
- Users can switch languages from the settings
Update lib/data/network/constants/endpoints.dart to match your backend API structure.
# Run all tests
flutter test
# Run tests with coverage
flutter test --coverage
# Run specific test file
flutter test test/widget_test.dart# Build APK
flutter build apk --release
# Build App Bundle (recommended for Play Store)
flutter build appbundle --releaseThe built files will be in build/app/outputs/.
# Build for iOS
flutter build ios --releaseOpen ios/Runner.xcworkspace in Xcode to archive and submit to App Store.
# Build for web
flutter build web --releaseThe built files will be in build/web/. Deploy the contents to your web server or hosting platform.
Navigate to Preferences β Editor β File Types and add the following patterns under Ignore files and folders:
*.inject.summary;*.inject.dart;*.g.dart;
Navigate to Preferences β Settings, search for Files: Exclude, and add:
**/*.inject.summary
**/*.inject.dart
**/*.g.dart
If code generation fails:
# Clean and rebuild
flutter clean
flutter pub get
flutter packages pub run build_runner build --delete-conflicting-outputs- Ensure the backend is running and accessible
- Check the base URL in
endpoints.dart - For Android emulator connecting to localhost, use
http://10.0.2.2:8080instead ofhttp://localhost:8080 - For iOS simulator,
http://localhost:8080should work
Clear app data and reinstall:
# Uninstall from device
flutter clean
# Reinstall
flutter run- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Follow Flutter/Dart style guidelines
- Write tests for new functionality
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Effective Dart style guide
- Use MobX for state management
- Write widget tests for UI components
- Keep widgets small and focused
- Use meaningful variable and function names
This project is licensed under the MIT License - see the LICENSE.md file for details.
- Backend API: Guide Wizard Backend - The backend system powering this app
For questions and support:
- Create an issue in the GitHub repository
- Check Flutter documentation at flutter.dev
- Review the troubleshooting section above
This project was built using the Flutter Boilerplate Project as a foundation.
Built with β€οΈ using Flutter




