A Flutter Project Blueprint for Building Maintainable and Scalable Flutter Apps.
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 mason
Installation
# Install locally
mason add domain_driven_bloc
# Or install globally
mason add -g domain_driven_bloc
Usage π
# Generate the domain_driven_bloc app template
mason make domain_driven_bloc
Out of the box, Domain-Driven Bloc includes:
- β Cross Platform Support - Built-in support for iOS, Android, Web, and Windows (MacOS/Linux coming soon!)
- β Build Flavors - Multiple flavor support for development, staging, and production
- β Internationalization Support - Internationalization support using synthetic code generation to streamline the development process
- β Sound Null-Safety - No more null-dereference exceptions at runtime. Develop with a sound, static type system.
- β Bloc - Integrated bloc architecture for scalable, testable code which offers a clear separation between business logic and presentation
- β Testing - Unit and Widget(Golden) Tests with more than 80% line coverage
- β Logging - Built-in, extensible logging to capture uncaught Flutter and Dart Exceptions
- β Continuous Integration - Lint, format, test, and enforce code coverage using GitHub Actions
- β Dependabot Integration - Automated dependency updates built into GitHub
- β Flutter Version Management - A simple CLI to manage Flutter SDK versions.
- β Makefile - A simple way to organize and standardize project commands
β
Flutter Bloc
β
Flutter Hooks
β Fpdart
β
Freezed
β
Json Serializable
β Go Router
β
Injectable
β
Get It
β Dotenv
β Chopper
β
Secure Storage
β
Shared Preferences
β Safe Device
β
Logger
β
Pretty Chopper Logger
β
Package Info Plus
β
Device Info Plus
β
Flutter Svg
β
Flutter Gen
β
Alchemist
β
Golden Toolkit
β
Bloc Test
β
Mockito
β
Mocktail Image Network
β
Faker
β
Very Good Analysis
β
Dependency Validator
- β΄οΈ Domain-Driven-Bloc - A clean architecture based on domain driven design
- β΄οΈ Authentication - A mock authentication implementation using Reqres API (e.g. Email: [email protected], Password: password ).
- β΄οΈ Home - Displays the post found in the sub-reddit FlutterDev.
- β΄οΈ Profile - Displays the basic information of the mocked user.
- β΄οΈ Dark Mode - Switch between Light and Dark themes
- β΄οΈ Unit Testing - Performs a unit test to verify the correctness of a unit of logic under the Bloc and repository layers
- β΄οΈ Widget(Goldens) Testing - Performs a widget tests that uses a special matcher that compares your widget with an image file and expects that it looks the same
βββ .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
β β β βββ bloc
β β β βββ interface
β β β βββ entity
β β β βββ enum
β β βββ presentation
β β βββ views
β β βββ widgets
β β βββ dialogs
β β βββ wrappers
β βββ features
β β βββ auth
β β β βββ data
β β β β βββ dto
β β β β βββ repository
β β β β βββ service
β β β βββ domain
β β β β βββ bloc
β β β β βββ interface
β β β β βββ entity
β β β βββ presentation
β β β βββ views
β β β βββ widgets
β β βββ home
β β β βββ data
β β β β βββ dto
β β β β βββ repository
β β β β βββ service
β β β βββ domain
β β β β βββ bloc
β β β β βββ interface
β β β β βββ entity
β β β βββ presentation
β β β βββ views
β β β βββ widgets
β β βββ profile
β β βββ data
β β β βββ dto
β β β βββ repository
β β β βββ service
β β βββ domain
β β β βββ bloc
β β β βββ interface
β β β βββ entity
β β βββ presentation
β β βββ views
β β βββ widgets
β βββ main.dart
βββ scripts
βββ test
β βββ utils
β βββ unit
β β βββ core
β β β βββ bloc
β β β βββ repository
β β βββ features
β β βββ auth
β β β βββ bloc
β β β βββ repository
β β βββ home
β β βββ bloc
β β βββ 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 |