This project is a Flutter application scaffolded with GetX ( BloC working in it ... ) and follows the MVC ( Model-View-Controller) architecture.
To streamline the process of creating project structures and modules, we've developed a command-line tool called Thunder CLI. It simplifies the setup of your Flutter project. Below are the available commands and their usage:
To install Thunder CLI, run the following command:
dart pub global activate thunder_cli
To create and initialize a new Flutter project [ Folders and packages ] with Thunder CLI, use the following command:
thunder --init
This command will set up the following components for your project:
- Main File
- Components for Application (e.g., animated widgets, snackbar)
- Themes (Dark and Light)
- Constants (e.g., colors, strings)
- Routes and App Pages
- Local storage
- Remote storage
- Awesome Notification
- FCM
- Dio Base Client
- Translations (e.g., localization service, strings)
- Publish app to GitHub
- Open the folder in VS code
- Setup GitHub action
- Setup flavor
To create a new Feature , use the following command:
thunder --feature
This command will set up the following components for your module:
- Binding
- Controller
- View
- Add view in routes and app pages
To create a new model via url (e.g., https://jsonplaceholder.typicode.com/posts), use the following command:
thunder --model
This command will set up the following components for your model:
- Model
- Named constructor
- FromJson
- ToJson
thunder --c_api
This command will auto convert api collection to code :
- Read all variables from collection
- Extract all request
- Add all api routes to api_contents.dart
- Build body model for all requests
- Build response model for all requests
- Build repos for all requests
- Build basic controller for all requests
To show help, use the following command:
thunder --h
The project structure URL :
https://github.com/abdAlftahSalem/flutter_getx_template.git
Feel free to contribute to this project by opening issues, suggesting new features, or submitting pull requests.
This project is licensed under the MIT License.