A sample Flutter app that has multiple features.
Inspired by Clean Architecture from Uncle Bob
App has multiple features - posts, weather. Each feature is split into 3 layers
- Presentation - contains Presentation Layer (widgets and cubits)
- Domain - contains Domain layer with business logic (interactors and interfaces)
- Data - contains Data layer with REST API requests
- UI sends signals to Cubit
- Cubit executes use cases from Interactor.
- Use case obtains data from Repository
- Repository returns data from an Api.
- Information flows back to the UI to be displayed.
Presentation and Data depend on Domain, but Domain knows nothing about them.
- data
- domain
- widgets
- UI tests
- see ui_tests/Readme.md for details
[✓] Flutter (Channel stable, 3.41.3, on macOS 26.2 25C56 darwin-arm64, locale en-KG) [465ms]
• Flutter version 3.41.3 on channel stable at ~/fvm/versions/3.41.3
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 48c32af034 (5 days ago), 2026-02-27 17:09:06 -0500
• Engine revision 327ed81450
• Dart version 3.11.1
• DevTools version 2.54.1
• Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, omit-legacy-version-file, enable-lldb-debugging,
enable-uiscene-migration
[✓] Android toolchain - develop for Android devices (Android SDK version 36.1.0) [2.8s]
• Android SDK at ~/Library/Android/sdk
• Emulator version 36.4.9.0 (build_id 14788078) (CL:N/A)
• Platform android-36, build-tools 36.1.0
• ANDROID_HOME = ~/Library/Android/sdk
• Java binary at: /opt/homebrew/opt/openjdk@17/bin/java
This JDK is specified in your Flutter configuration.
To change the current JDK, run: `flutter config --jdk-dir="path/to/jdk"`.
• Java version OpenJDK Runtime Environment Homebrew (build 17.0.14+0)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 26.1.1) [1,465ms]
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 17B100
• CocoaPods version 1.16.2
- install flutter
dart pub global activate melosdart run melos bootstrapcd apps/app_mainflutter run
- CONTRIBUTING.md contains information about frameworks and libraries in app
- generate mappers
- make some injectables package private
- add loading indicators using Lottie
- add Oauth2 example

