ssl_cli 4.0.5
ssl_cli: ^4.0.5 copied to clipboard
A flutter architecture creator package.
ssl_cli π #
ssl_cli is your opinionated command-line companion for building production-ready Flutter apps in record time. It bakes in Clean Architecture, modular scaling, design-system best practices, and DevOps automation so your team can stay focused on shipping featuresβnot wiring boilerplate.
- Architecture-first: generate full Clean Architecture projects and modules with domain, data, and presentation layers ready to go.
- State management flexibility: pick Riverpod (default) or Bloc during scaffoldingβssl_cli generates the right folder structure and stubs for you.
- Design system included: preconfigured global widgets (text, buttons, dropdowns, images, SVGs, app bars) and asset/color enums keep UI consistent.
- Automation everywhere: build flavors with obfuscation, auto-share APKs to Telegram, sync assets, kick off build_runner, and generate documentation from a single CLI.
Table of Contents #
- Why ssl_cli
- Core Capabilities
- Clean Architecture Blueprint
- Quick Start
- Command Reference
- Generated Project Structure
- UI & Design System Guidelines
- Automation & DevOps Helpers
- Contributing
- License
- Support
- Changelog
Why ssl_cli #
Flutter teams fight repetitive setup: folder conventions, state management wiring, asset registries, flavor configs, documentation, and build distribution. ssl_cli turns those decisions into confident defaults:
- Consistency: every project and module follows the same Clean Architecture and naming conventions.
- Scalability: generate new modules on demand with the entire domain β data β presentation pipeline.
- Velocity: opinionated templates reduce the cognitive load for new developers joining mid-project.
- Quality: prebuilt service locator, ScreenUtil setup, networking hooks, and error handling nudge you towards best practices.
- Automation: everyday chores (assets, build_runner, flavor builds) become one-liners.
Core Capabilities #
| Area | What ssl_cli Automates |
|---|---|
| Project scaffolding | Create a Clean Architecture Flutter app from scratch with prewired core modules. |
| Module generation | Spin up feature modules with domain/data/presentation layers and optional Bloc or Riverpod states. |
| Design system | Global widgets, responsive typography via flutter_screenutil, centralized colors/assets enums. |
| Assets & L10n | Auto-generate k_assets.dart, create assets folders, and seed localization structure. |
| Documentation | Generate AI-assisted markdown docs for any folder or file. |
| Build & Release | Configure flavors, obfuscate builds, rename APKs by flavor, and deliver them to Telegram groups. |
| Developer tooling | Kick off build_runner or watch tasks with zero setup. |
Clean Architecture Blueprint #
ssl_cli follows a layered Clean Architecture implementation.
ββββββββββββββββββββββββββββ
β Presentation Layer β βΆοΈ Riverpod or Bloc wiring, pages, widgets
ββββββββββββββββββββββββββββ€
β Domain Layer β βΆοΈ Use cases, entities, repository contracts
ββββββββββββββββββββββββββββ€
β Data Layer β βΆοΈ Models, repositories, remote & local data sources
ββββββββββββββββββββββββββββ
- Domain before details: Entity and use case templates keep business rules pure and testable.
- Data isolation: Remote/local data sources and repository implementations ship with error-handling scaffolds, network checks, and caching placeholders.
- Presentation clarity: Choose
Riverpod(default) for provider/notifier setups or opt intoBlocto generate events, states, and blocs automatically. - State Management Prompt: When you scaffold a Clean Architecture project or module, ssl_cli asks for your preferred pattern and scaffolds the correct directory tree and stubs.
π§ The project root also includes
core/utilitiesβservice locator, API helpers, global widgets, theming, navigation, and moreβso modules can focus on feature logic.
Quick Start #
-
Create a Flutter project (if you haven't already).
flutter create <project_name> -
Activate ssl_cli globally.
dart pub global activate ssl_cli -
Add the Dart pub cache to your PATH (first-time setup only):
- Windows: update System Environment Variables.
- macOS: add
export PATH="$PATH":"$HOME/.pub-cache/bin"to~/.zshrc. - Linux: add the same export to
~/.bashrc.
-
Navigate to your Flutter project root and run:
ssl_cli create <project_name>- Pick pattern
4for the Clean Architecture template when prompted. - Choose your state management flavor (Riverpod or Bloc) when asked.
- Pick pattern
-
Bootstrap modules anytime.
ssl_cli module <module_name>Select the Clean Architecture module pattern, then choose Riverpod or Bloc for that module.
β Always run commands from the Flutter project root so assets, localization, and configuration files generate in the right place.
Command Reference #
Project & Module Scaffolding #
ssl_cli create <project_name> # Generate a full Flutter project (choose Clean Architecture pattern "4")
ssl_cli module <module_name> # Add a new feature module (select Clean Architecture pattern "3")
Assets & Documentation #
ssl_cli generate k_assets.dart # Build the assets enum (rerun after adding new assets)
ssl_cli generate k_assets.dart --t # Build theme-based assets enum with dark/light folder support
ssl_cli generate <path> # Create AI-assisted documentation for a file or folder
Theme-based Assets (--t flag):
When your assets are organized with dark/ and light/ subfolders (e.g., assets/images/dark/, assets/images/light/), use the --t flag. This generates:
- Automatic theme switching between dark and light variants
- Fallback to common assets (files outside dark/light folders)
- Helper methods
_themedSvg()and_themedPng()that checkThemeManager().isDarkMode
Folder structure example:
assets/
ββ images/
β ββ dark/
β β ββ bg.png
β ββ light/
β β ββ bg.png
β ββ common_image.png
ββ svg/
ββ dark/
β ββ icon.svg
ββ light/
β ββ icon.svg
ββ common_icon.svg
Code Generation Helpers #
ssl_cli generate build_runner # Run build_runner once
ssl_cli generate build_runner_watch# Run build_runner in watch mode
Flavor Setup & Builds #
ssl_cli setup --flavor # Configure flavor-based builds (works on existing projects too)
ssl_cli build apk --flavorType # Build APK per flavor (--DEV/--LIVE/--LOCAL/--STAGE)
ssl_cli build apk --flavorType --t # Build and auto-share APK to Telegram (requires config.json)
βΉοΈ When using the Telegram flag (
--t), providebotTokenandchatIdin the generatedconfig.jsonfile. Obtain them via BotFather and thegetUpdatesAPI.
Generated Project Structure #
Below is a trimmed example of what a Clean Architecture project scaffolding looks like (Riverpod option shown):
lib/
ββ core/
β ββ constants/
β ββ di/
β ββ error/
β ββ network/
β ββ presentation/
β β ββ widgets/
β β β ββ global_appbar.dart
β β β ββ global_button.dart
β β β ββ global_dropdown.dart
β β β ββ global_image_loader.dart
β β β ββ global_svg_loader.dart
β β β ββ global_text.dart
β β ββ ...
β ββ utils/
ββ features/
β ββ products/
β ββ data/
β β ββ datasources/
β β ββ models/
β β ββ repositories/
β ββ domain/
β β ββ entities/
β β ββ repositories/
β β ββ usecases/
β ββ presentation/
β ββ pages/
β ββ providers/
β β ββ state/
β ββ widgets/
ββ l10n/
Selecting Bloc replaces the providers/ folder with a bloc/ directory containing event/, state/, and bloc classes.
UI & Design System Guidelines #
ssl_cli ships with a unified design language to keep your UI consistent:
- Typography: Use
GlobalText; it wrapsScreenUtilto ensure responsive font sizes. - Fields & Inputs: Prefer
GlobalTextFormFieldfor form elements andGlobalDropdownfor selects. - Buttons & App Bars: Use
GlobalButtonandGlobalAppBarcomponents for consistent theming. - Images: Route PNG/JPEG assets through
GlobalImageLoaderand SVGs throughGlobalSvgLoader. - Assets: Register all new assets in the enum within
k_assets.dart, referencing them via the generated enum names (e.g.,ImageNamePng.myIllustration). - Colors: Extend the enum in
k_colors.dartand reference colors through their enum identifiers (e.g.,ColorName.primaryBackground). - Fonts: Avoid directly applying
.spβGlobalTextalready handles responsive scaling.
Asset placement: store raster images under
assets/images/and SVGs underassets/svg/. Re-runssl_cli generate k_assets.dartwhenever the folders change.
Automation & DevOps Helpers #
- Flavor-aware builds: Configure once, then ship flavor-specific APKs with automatic renaming (
appName_flavor_versionName_versionCode.apk). - Code obfuscation: Combine
ssl_cli build apk --flavorTypewith Flutterβs obfuscation flags in your build config for extra protection. - Telegram delivery: Append
--tto send finished builds straight to your team chat (after configuringconfig.json). - Documentation generation: Point ssl_cli at any folder or file to bootstrap human-friendly docs for handoff or onboarding.
Contributing π€ #
Contributions are welcome! Please check existing issues, open new discussions, or submit a pull request to improve ssl_cli.
License π #
This project is licensed under the MIT License β see the LICENSE file for details.
Support β€οΈ #
If ssl_cli streamlines your workflow, please give it a β on GitHub and share it with your Flutter community.
Changelog π #
See CHANGELOG.md for a history of updates and new features.
Made with β€οΈ by Abu Sayed Chowdhury