Nonstop Logo

NonStop

Digital Product Development Experts for Startups & Enterprises

About | Website

πŸŽ‰ Founded by Ajay Kumar πŸŽ‰**

πŸš€ NonStop CLI

⚑ Supercharge your Flutter development with mono-repo magic

pub package License Flutter


🎯 What is NonStop CLI?

The NonStop CLI simplifies Flutter project setup and management, with a focus on mono-repository structures using Melos. It provides standardized templates, validation tools for your development environment, and ongoing updates for the best experience.

🎨 Perfect for teams who want consistent project structure and streamlined development workflows

πŸš€ Quick Start

# Install NonStop CLI globally
dart pub global activate nonstop_cli

# Check your development environment
nonstop doctor

# Create your first mono-repo project
nonstop create my_awesome_app

# Navigate and start coding!
cd my_awesome_app

πŸ“– Commands

πŸ—οΈ create - Project Generator

Creates a new Flutter project based on predefined templates.

nonstop create <project-name> [arguments]

πŸ”§ Arguments

Argument Alias Description Default
--template -t Type of project to create mono
--output-directory -o Output directory for the new project Current directory
--description --desc Description for the new project "A Melos-managed project for mono-repo, created using NonStop CLI."
--org-name --org Organization name for the new project com.example
--defaults -y Skip the module picker and take the recommended set Prompt

πŸ“¦ Template Options

Template 🎯 Description πŸ“ Structure Created
mono 🏒 Generate a full app skeleton in a mono-repo (default) App shell, design system, localization and the modules you pick
package πŸ“¦ Generate a Flutter package for a Melos-managed mono-repo Flutter package compatible with mono-repo structure
app πŸ“± Generate a Flutter application for a Melos-managed mono-repo Flutter application configured for mono-repo structure
plugin πŸ”Œ Generate a Flutter plugin for a Melos-managed mono-repo Flutter plugin compatible with mono-repo structure

πŸ’‘ Examples

🧩 Modules

mono does not stop at empty folders. It asks which platform modules the app needs and generates them wired together - bootstrap order, DI registration, route table and all.

? Which modules should youtube start with?
❯ β—‰  Network          - Dio client, auth + logging interceptors, typed errors
  β—‰  Authentication   - Firebase Auth (email, Google, Apple) with route guards
  β—―  Cloud Firestore  - Firestore + Cloud Functions wiring and timestamp converters
  β—‰  Push notifications
  β—‰  Analytics
  β—‰  Crash reporting
  β—‰  Feature flags
  β—‰  Developer tools
  β—‰  Dashboard shell

Answer non-interactively with -y (recommended set) or per module:

nonstop create youtube -y --no-notifications --firestore

Two rules are applied for you, because the code will not compile otherwise: push notifications pull in network, and developer tools pull in feature_flags.

Every project also gets core, di, design_system, localization and utils - the pieces every app needs.

🏒 Create a mono-repo project
nonstop create youtube

This creates the following structure:

youtube/
β”œβ”€β”€ πŸ“± apps/
β”‚   └── youtube/          # bootstrap, router, splash - no business logic
β”œβ”€β”€ 🧩 features/
β”‚   β”œβ”€β”€ auth/             # Firebase Auth + route guards
β”‚   └── dashboard/        # bottom-navigation shell
β”œβ”€β”€ πŸ“¦ packages/
β”‚   β”œβ”€β”€ core/             # logger, DI bootstrap, observers, error types
β”‚   β”œβ”€β”€ design_system/    # Material 3 theme, components, toasts
β”‚   β”œβ”€β”€ di/               # service locator
β”‚   β”œβ”€β”€ localization/     # type-safe strings (i69n)
β”‚   β”œβ”€β”€ network/          # Dio client and interceptors
β”‚   β”œβ”€β”€ analytics/
β”‚   β”œβ”€β”€ crashlytics/
β”‚   β”œβ”€β”€ feature_flags/
β”‚   β”œβ”€β”€ notifications/
β”‚   β”œβ”€β”€ developer/
β”‚   └── utils/
β”œβ”€β”€ πŸ”Œ plugins/
β”œβ”€β”€ πŸ“‹ analysis_options.yaml
β”œβ”€β”€ πŸ“– README.md
β”œβ”€β”€ βš™οΈ melos.yaml
└── πŸ“„ pubspec.yaml

The generated workspace is bootstrapped, formatted and passes its own melos lint and melos test before you touch it. If you picked any Firebase module, run flutterfire configure in the app directory when you want those features live. Until then the app still runs; Firebase-backed modules are skipped at startup.

πŸ“¦ Create a Flutter package for a mono-repo
nonstop create core --template package
πŸ“± Create a Flutter application for a mono-repo
nonstop create youtube_studio --template app -o ./apps
🏒 Create with custom organization
nonstop create youtube_music --org-name com.youtube
πŸ“ Create in a specific directory
nonstop create youtube -o ./projects

🩺 doctor - Environment Checker

Checks your development environment to ensure all required tools are installed and configured correctly.

nonstop doctor

πŸ” What it checks:

Tool πŸ“‹ Analysis
🐦 Flutter Installation and version compatibility
🎯 Dart SDK Installation and version compatibility
πŸ”§ Melos Installation and version compatibility

πŸ“Š Status Indicators:

  • βœ… Success: Tool is installed and working properly
  • ⚠️ Partial: Tool is installed but has issues
  • ❌ Missing: Tool is not installed or not found
nonstop doctor output

πŸ”„ update - Stay Current

Updates the NonStop CLI to the latest version automatically.

nonstop update

πŸš€ What it does:

  1. πŸ” Checks the current installed version
  2. 🌐 Compares with the latest version on pub.flutter-io.cn
  3. ⬆️ Updates to the latest version if needed

πŸ”„ Common Workflows

πŸš€ Setting up a new Flutter project with mono-repo

# 1️⃣ Check if your environment is properly set up
nonstop doctor

# 2️⃣ Create a new Flutter project with mono-repo structure
nonstop create youtube

# 3️⃣ Navigate to the project directory
cd youtube

# πŸŽ‰ You're ready to code!

πŸ“¦ Adding a new package to an existing mono-repo

# 1️⃣ Navigate to your mono-repo root
cd youtube/packages

# 2️⃣ Create a new package
nonstop create core --template package

# 3️⃣ Update dependencies
melos bootstrap

πŸ“± Adding a new app to an existing mono-repo

# 1️⃣ Create a new app in the apps directory
nonstop create youtube_studio --template app -o ./apps

# 2️⃣ Update dependencies
melos bootstrap

πŸ› οΈ Troubleshooting

❌ CLI not found after installation

Ensure the Dart SDK bin directory is in your PATH. Follow the instructions at: πŸ“– Running a script from your PATH

⚠️ Doctor command shows issues

If the doctor command shows issues with your development environment:

  1. 🐦 Ensure Flutter is installed correctly: Flutter Installation
  2. 🎯 Verify your Dart SDK installation: dart --version
  3. πŸ”§ Install Melos if missing: dart pub global activate melos

🚫 Template generation fails

If template generation fails:

  1. πŸ” Ensure you have proper permissions in the target directory
  2. βœ… Check if the project name is valid (should follow Dart package naming rules)
  3. πŸ” Run with the --verbose flag to see detailed logs: nonstop create my_project --verbose

βš™οΈ Global Options

Option Alias πŸ“ Description
--version -v πŸ“Š Print the current version of the CLI
--verbose πŸ” Enable verbose logging including all shell commands
--help -h ❓ Display help information for commands

πŸ”— Command Aliases

Choose your preferred way to invoke the CLI:

nonstop create my_app    # Full command
ns create my_app         # Short alias
nsio create my_app       # Alternative alias
Alias πŸ“ Description
nonstop 🎯 Full command name
ns ⚑ Quick shorthand
nsio πŸš€ Alternative short form

πŸ”— Connect with NonStop

Stay connected and get the latest updates!

LinkedIn X.com Instagram YouTube Email


⭐ Star us on GitHub if this helped you!

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.