Skip to main content

Concepts

Morpheme Flutter Starter Kit built with modular to be easy maintained and separate tasking.

Tech Stack​

Morpheme Flutter Starter Kit built using the following major dependencies:

Folder Structure​

Overall Folder Structure
.
├── android # Android native directory
├── assets # Module assets
│ ├── assets # Assets directory
│ ├── lib # Assets source code directory
├── core # Module core
│ ├── lib
│ │ ├── src
│ │ │ ├── components # Global components
│ │ │ ├── constants # Global constants
│ │ │ ├── extensions # Global extensions
│ │ │ ├── firebase # Firebase helper
│ │ │ ├── helper # Global helper
│ │ │ ├── l10n # Localization (generated with morpheme l10n)
│ │ │ ├── shared # Global shared class
│ │ │ ├── test # Global helper test
│ │ │ ├── themes # Global themes style
│ │ │ ├── environment.dart # Environment data from --dart-define
│ │ │ ├── global_variable.dart # Global variable may used in feature module
│ │ │ ├── locator.dart # Service locator core
│ │ ├── core_test.dart # Identity library core test
│ │ ├── core.dart # Identity library core
│ ├── packages
│ │ ├── dependency_manager # Module global dependencies
│ │ ├── morpheme_library # Specific dependencies from morpheme_library
│ ├── test # Core unit test & widget test
├── features # Modules feature directory
│ ├── auth # Auth's modules (example)
│ ├── home # Home's modules (example)
├── ios # iOS native directory
├── json2dart # Json2dart directory
│ ├── json
│ │ ├── body # Parameter body api in json
│ │ ├── response # Response api in json
│ ├── json2dart.yaml # Main file to control generate json2dart
├── lib
│ ├── main
│ │ ├── main_page.dart # Main pages
│ ├── routes # Routes with Go Router
│ ├── locator.dart # Routes with Go Router
│ ├── main.dart # Service locator main (auto generated)
├── morpheme.yaml # Main environtment variable
└── ...

Feature Folder Structure (Example)
┌── ...
├── features # Modules feature directory
│ ├── auth # Auth's modules (example)
│ │ ├── lib
│ │ │ ├── login # Login's page (example)
│ │ │ │ ├── data # Data layer
│ │ │ │ │ ├── datasources # Datasource implementation (auto generated)
│ │ │ │ │ ├── models # Data model body and response (auto generated)
│ │ │ │ │ ├── repositories # Implementation repositories (auto generated)
│ │ │ │ ├── domain # Domain layer
│ │ │ │ │ ├── entities # Entity take from response (auto generated)
│ │ │ │ │ ├── repositories # Contract repositories (auto generated)
│ │ │ │ │ ├── usecases # Usecase implementation (auto generated)
│ │ │ │ ├── presentation # Presentation layer
│ │ │ │ │ ├── bloc # Implementation bloc for fetch api (auto generated)
│ │ │ │ │ ├── cubit # Controller with Cubit
│ │ │ │ │ ├── pages # Pages directory
│ │ │ │ │ ├── widgets # Widgets directory for login page
│ │ │ │ ├── locator.dart # Service locator login page (auto generated)
│ │ │ │ ├── mapper.dart # Mapper models to entities vice versa (auto generated)
│ │ │ ├── locator.dart # Service locator auth (auto generated)
│ │ ├── test # Auth's unit test & widget test
└── ...

Config (morpheme.yaml)​

Like the .env morpheme.yaml aims to save the config environment will be ignored and keep secret only the team in the project has the right to get the morpheme.yaml.

Core​

The core module is a reusable code that is used in all features. Core module has additional dependencies on packages:

  • Dependency Manage : All third party dependency except Morpheme Library
  • Morpheme Library : Dependency from Morpheme

Internationalization​

Internationalization location in assets/assets/l10n and will generated to core/lib/src/l10n with official tools flutter gen-l10n and simplied with Morpheme CLI command morpheme l10n. Learn more about Internationalization here

Pattern​