Welcome gorgeous! This project is a comprehensive Flutter application built using the Model-View-Controller (MVC) architecture. It provides a robust framework for developing mobile applications with a clean separation of concerns, making it easier to manage and scale your codebase.
- MVC Architecture: Clear separation of concerns between models, views, and controllers.
- Flutter Integration: Leverages the power of Flutter for building beautiful, high-performance mobile applications.
- Firebase Integration: Seamless integration with Firebase for authentication, database, and other cloud services.
- Extensive Documentation: Comprehensive documentation to help you get started quickly.
- Developers looking to build scalable and maintainable mobile applications.
- Teams that want to leverage the MVC architecture for better code organization.
- Flutter enthusiasts who want to explore advanced features and best practices.
- Authentication: Secure user authentication using Firebase.
- Data Management: Efficient data management with Firebase Firestore.
- Cross-Platform: Build once, run anywhere with Flutter.
- State Management: Efficient state management using Riverpod.
- API Integration: Easy integration with RESTful APIs using Dio.
- Programming Language: Dart
- Frameworks and Libraries:
- Flutter
- Firebase
- Riverpod
- Dio
- GoRouter
- Provider
- System Requirements:
- Flutter SDK
- Dart SDK
- Android Studio (for Android development) or IDE of your choice i.e VSCode
- Xcode (for iOS development)
- Flutter SDK
- Dart SDK
- Android Studio
- Xcode
# Clone the repository
git clone https://github.com/Gicehajunior/mobile-flutter-mvc-architecture.git
# Navigate to the project directory
cd mobile-flutter-mvc-architecture
# Get dependencies
flutter pub get
# Run the application
flutter run- Docker: You can use Docker to set up a development environment.
- Package Managers: Use package managers like
pubto manage dependencies.
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:mvcflutter/public/index.dart';
Future main() async {
WidgetsFlutterBinding.ensureInitialized();
MyApp app = MyApp();
// Initialize services before
//running the app
await app.initializeApp();
// Run the app within ProviderScope for Riverpod
//state management
runApp(const ProviderScope(child: MyApp()));
}- Customizing Views: You can customize the views by modifying the
viewsListinlib/config/view_list.dart. - Adding New Screens: Add new screens by defining them in
lib/config/view_list.dartand creating their respective controllers.
mobile-flutter-mvc-architecture/
├── android/
├── ios/
├── lib/
│ ├── app/
│ │ ├── controllers/
│ │ ├── providers/
│ │ ├── services/
│ │ ├── utils/
│ │ ├── views/
│ ├── config/
│ │ ├── app_config.dart
│ │ ├── app_logger.dart
│ │ ├── app_router.dart
│ │ ├── controller.dart
│ │ ├── mvc_exception.dart
│ │ ├── provider_registry.dart
│ │ ├── session_manager.dart
│ │ ├── view_factory.dart
│ │ ├── view_interface.dart
│ │ ├── view_list.dart
│ │ ├── view_request.dart
│ ├── features/
│ ├── main.dart
│ ├── presentation/
│ │ ├── screens/
│ │ ├── themes/
│ │ ├── widgets/
│ ├── public/
│ │ ├── repos/
│ │ │ ├── global/
│ │ │ ├── lang/
│ │ │ ├── methods/
│ │ │ ├── mobile/
│ │ ├── assets/
│ │ │ ├── avatars/
│ │ │ ├── images/
│ │ │ ├── logo/
│ │ │ ├── svg/
│ │ │ ├── videos/
│ │ ├── cache/
│ │ │ ├── xxx/
│ │ ├── storage/
│ │ │ ├── xxx/
│ │ ├── index.dart
│ ├── routes/
│ │ ├── app.dart
├── .editorconfig
├── .gitignore
├── README.md
├── analysis_options.yaml
├── devtools_options.yaml
├── pubspec.yaml
├── test/
│ ├── widget_test.dart
├── web/
├── windows/
└── linux/
- Environment Variables: Set environment variables in
.envfile. - Configuration Files: Configuration files are located in
lib/config/.
We welcome contributions! Here's how you can get started:
-
Clone the Repository
git clone https://github.com/Gicehajunior/mobile-flutter-mvc-architecture.git cd mobile-flutter-mvc-architecture -
Get Dependencies
flutter pub get
-
Run the Application
flutter run
- Follow the Dart and Flutter coding conventions.
- Use meaningful variable and function names.
- Keep your code modular and maintainable.
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes and commit them.
- Push your branch to your fork.
- Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
- Maintainers: Bernard
- Contributors: You and Me
- Report Issues: Open an issue on the GitHub repository.
- Get Help: Join the Flutter community on Flutter.dev or Stack Overflow.
- Planned Features:
- Add support for more platforms (e.g., Windows, macOS).
- Improve state management with Riverpod.
- Enhance Firebase integration.
- Known Issues: List of known issues
- Future Improvements: List of future improvements
Getting started with the mobile-flutter-mvc-architecture project. Happy coding!