Domain-Driven Bloc jumpstarts your Flutter projects with a clean, modular foundation. Get instant best practicesโBloc, Clean Architecture, DI, and feature isolationโso you can focus on building, not boilerplate. Everything you need for fast, confident app development is ready out of the box.
This project was originally developed by Very Good Ventures ๐ฆ
It has been forked and adapted for creating different app templates with a clean architecture based on domain driven design
This fork is not officially maintained or affiliated with Very Good Ventures.
This app template can be generated using mason_cli with customized variables.
Ensure you have mason_cli installed.
# Activate mason_cli from https://pub.dev
dart pub global activate mason_cli# Or install from https://brew.sh
brew tap felangel/mason
brew install masonInstallation
# Install locally
mason add domain_driven_bloc# Or install globally
mason add -g domain_driven_blocUsage ๐
# Generate the domain_driven_bloc app template
mason make domain_driven_blocEverything you need for a modern, production-grade Flutter app:
- ๐๏ธ Clean Architecture: Modular, scalable architecture inspired by DDDโseparation of concerns, testability, and maintainability.
- ๐งฉ Feature Isolation: Each feature is fully modular for easy scaling and testing.
- ๐ง Bloc State Management: Clean separation of business logic and UI using Bloc.
- ๐งฌ Dependency Injection: Built-in DI with injectable, get_it for testability and loose coupling.
- ๐ Configurable Build Flavors: Effortless switching between dev, staging, and prod environments.
- ๐ Internationalization: Streamlined i18n with codegenโadd new languages in minutes, no manual boilerplate.
- ๐ก Null Safety: 100% sound null safety for safer, more reliable code.
- ๐ Secure Storage: Secure sensitive data with flutter_secure_storage.
- ๐งช Testing Suite: Extensive unit, widget, and golden tests; includes mocks, fakes, and golden tests for robust, reliable test suites.
- ๐ Extensible Logging: Catch and log uncaught exceptions, plug in your own loggers, or use pretty logging for debugging and production.
- ๐ Performance Ready: Responsive layouts and best practices for smooth UX on all platforms.
- ๐งโ๐ป Developer Experience: Makefile, FVM, and pre-configured analysis for fast onboarding and consistent code quality.
- ๐ค CI/CD Ready: Lint, format, test, and coverage checks via GitHub Actions.
- ๐ Automated Dependency Updates: Dependabot keeps your dependencies fresh and secure.
- ๐ง State Management: flutter_bloc, flutter_hooks
- ๐งฎ Functional Programming: fpdart, fpvalidate
- ๐๏ธ Model: freezed, json_serializable
- ๐งญ Navigation: go_router
- ๐งฌ DI: injectable, get_it
- ๐ฑ Responsive: responsive_framework
- ๐ฑ Env: flutter_dotenv
- ๐ HTTP: chopper
- ๐พ Storage: flutter_secure_storage, shared_preferences
- ๐ก Security: safe_device
- ๐ Logging: logger, pretty_chopper_logger
- ๐ Localization: intl, slang
- ๐งพ Device Info: package_info_plus, device_info_plus
- ๐ผ Assets: flutter_svg, flutter_gen
- ๐งช Testing: alchemist, bloc_test
- ๐ฆพ Mocking: mockito, mocktail_image_network, faker
- ๐งน Code Quality: very_good_analysis, dart_code_metrics
- ๐ Home: Live Reddit FlutterDev feed integrationโreal-world API, pagination, error handling.
- ๐ Auth: Mock login using DummyJSONโprototype real auth flows with any user.
- ๐ค Profile: Mock user profile via DummyJSONโuser state management and editing patterns.
- ๐ Dark Mode: Seamless theme switching with persistent user preference.
Output after running the template:
โโโ .github
โ โโโ PULL_REQUEST_TEMPLATE.md
โ โโโ dependabot.yaml
โ โโโ workflows
โ โโโ main.yaml
โโโ .idea
โ โโโ runConfigurations
โ โโโ development.xml
โ โโโ production.xml
โ โโโ staging.xml
โโโ .vscode
โ โโโ extensions.json
โ โโโ launch.json
โโโ android
โโโ assets
โ โโโ env
โ โโโ fonts
โ โโโ icons
โ โโโ images
โ โโโ i18n
โ โโโ en.i18n.json
โโโ ios
โโโ lib
โ โโโ app
โ โ โโโ config
โ โ โโโ constants
โ โ โโโ generated
โ โ โโโ helpers
โ โ โ โโโ converters
โ โ โ โโโ extensions
โ โ โ โโโ injection
โ โ โโโ observers
โ โ โโโ routes
โ โ โโโ themes
โ โ โโโ utils
โ โ โโโ app.dart
โ โโโ core
โ โ โโโ data
โ โ โ โโโ dto
โ โ โ โโโ repository
โ โ โ โโโ service
โ โ โโโ domain
โ โ โ โโโ cubit
โ โ โ โโโ interface
โ โ โ โโโ entity
โ โ โ โโโ enum
โ โ โโโ presentation
โ โ โโโ views
โ โ โโโ widgets
โ โ โโโ dialogs
โ โ โโโ wrappers
โ โโโ features
โ โ โโโ auth
โ โ โ โโโ data
โ โ โ โ โโโ dto
โ โ โ โ โโโ repository
โ โ โ โ โโโ service
โ โ โ โโโ domain
โ โ โ โ โโโ cubit
โ โ โ โ โโโ interface
โ โ โ โ โโโ entity
โ โ โ โโโ presentation
โ โ โ โโโ views
โ โ โ โโโ widgets
โ โ โโโ home
โ โ โ โโโ data
โ โ โ โ โโโ dto
โ โ โ โ โโโ repository
โ โ โ โ โโโ service
โ โ โ โโโ domain
โ โ โ โ โโโ cubit
โ โ โ โ โโโ interface
โ โ โ โ โโโ entity
โ โ โ โโโ presentation
โ โ โ โโโ views
โ โ โ โโโ widgets
โ โ โโโ profile
โ โ โโโ data
โ โ โ โโโ dto
โ โ โ โโโ repository
โ โ โ โโโ service
โ โ โโโ domain
โ โ โ โโโ cubit
โ โ โ โโโ interface
โ โ โ โโโ entity
โ โ โโโ presentation
โ โ โโโ views
โ โ โโโ widgets
โ โ
โ โโโ main.dart
โโโ scripts
โโโ test
โ โโโ utils
โ โโโ unit
โ โ โโโ core
โ โ โ โโโ cubit
โ โ โ โโโ repository
โ โ โโโ features
โ โ โโโ auth
โ โ โ โโโ cubit
โ โ โ โโโ repository
โ โ โโโ home
โ โ โโโ cubit
โ โ โโโ repository
โ โโโ widget
โ โ โโโ core
โ โ โ โโโ dialogs
โ โ โ โ โโโ goldens(generated)
โ โ โ โ โโโ failures(generated)
โ โ โ โโโ widgets
โ โ โ โโโ goldens(generated)
โ โ โ โโโ failures(generated)
โ โ โโโ features
โ โ โโโ auth
โ โ โ โโโ widgets
โ โ โ โโโ goldens(generated)
โ โ โ โโโ failures(generated)
โ โ โโโ home
โ โ โ โโโ widgets
โ โ โ โโโ goldens(generated)
โ โ โ โโโ failures(generated)
โ โ โโโ profile
โ โ โโโ widgets
โ โ โโโ goldens(generated)
โ โ โโโ failures(generated)
โ โโโ flutter_test_config.dart
โโโ web
โโโ .gitignore
โโโ analysis_options.yaml
โโโ coverage_badge.svg
โโโ LICENSE
โโโ Makefile
โโโ pubspec.lock
โโโ pubspec.yaml
โโโ README.md| Login Screen | Home Screen | Profile Screen |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Contributions are welcome! To get started:
- Fork the repo and create your branch from
main. - Make your changes, following the existing code style and conventions.
- Add tests for any new features or bug fixes.
- Run the linter and tests to ensure everything passes:
make lint # for static analysis make lcov_* # for running tests and generating coverage (see Makefile for available targets)
- Open a pull request with a clear description of your changes.
For major changes, please open an issue first to discuss what you'd like to change.
If you have questions, suggestions, or want to discuss ideas, feel free to open an issue or start a discussion.






