A lightweight Flutter starter template implementing MVVM architecture with Riverpod state management and Supabase backend. Perfect for indie hackers and solo developers looking to quickly bootstrap their projects.
This project was inspired by the Flutter App Architecture Guide and the Starter Architecture for Flutter & Firebase.
- MVVM Architecture: Clean separation of concerns
- Riverpod State Management: Efficient and type-safe state management solution
- Supabase Backend: Ready-to-use backend infrastructure
- Dark/Light Theme: Built-in theme support
- Localization: Multi-language support
- Authentication: Email & Social login ready
- Routing: Declarative routing with go_router
Category | Library | Purpose |
---|---|---|
State Management | ||
flutter_riverpod |
Reactive state management | |
riverpod_annotation |
Code generation for Riverpod | |
Backend & Auth | ||
supabase_flutter |
Backend as a service | |
google_sign_in |
Google authentication | |
sign_in_with_apple |
Apple authentication | |
Navigation | ||
go_router |
Declarative routing | |
Storage | ||
shared_preferences |
Local key-value storage | |
sqflite |
Local database | |
Network | ||
dio |
HTTP client | |
connectivity_plus |
Network connectivity | |
UI/UX | ||
google_fonts |
Custom fonts | |
flutter_svg |
SVG rendering | |
shimmer |
Loading animations | |
lottie |
Animation files | |
Utilities | ||
easy_localization |
Internationalization | |
envied |
Environment variables | |
uuid |
Unique identifiers | |
Analytics | ||
firebase_analytics |
Usage tracking | |
firebase_crashlytics |
Crash reporting | |
Monetization | ||
in_app_purchase |
In-app purchases |
lib/
├── constants/ # App constants and configurations
├── environment/ # Environment variables and config files
├── extensions/ # Extension methods and helpers
├── features/ # Feature modules
│ ├── common/
│ ├── authentication/
│ ├── home/
│ ├── onboarding/
│ ├── profile/
├── routing/ # Route configurations
├── theme/ # Theme configurations
└── utils/ # Utility functions
-
Clone this repository
git clone https://github.com/namanh11611/flutter_mvvm_riverpod.git
-
Install dependencies
flutter pub get
-
Generate code
dart run build_runner build --delete-conflicting-outputs
-
Change the app information
- To change the app package name, run the following command:
dart run change_app_package_name:main com.new.package.name
- To change the Android app name, open the
android/app/src/main/AndroidManifest.xml
file, change theandroid:label="New App Name"
- To change the iOS app name, open the
ios/Runner/Info.plist
file, change theCFBundleDisplayName
toNew App Name
- To change the iOS bundle name, open the
ios/Runner/Info.plist
file, change theCFBundleName
tonew_bundle_name
-
Run the app
flutter run
Light Theme | Dark Theme |
---|---|
Contributions, issues, and feature requests are welcome!
This project is licensed under the MIT License - see the LICENSE file for details.