ngTooLazy

August 1, 2026 · View on GitHub

npm version license node

ngTooLazy is a CLI that eliminates repetitive Angular project setup.

It is not an Angular application — it's a Node.js CLI that scaffolds one for you, with an opinionated architecture, starter guard/interceptor/service/layout/feature, and modern Angular conventions applied automatically.

npx ng-toolazy new ecommerce

What it does

Running ngtl new <name>:

  1. Installs the Angular CLI globally if it isn't already available.
  2. Runs ng new to scaffold a standalone, routed Angular application.
  3. Generates a predefined core / shared / features / layouts architecture under src/app.
  4. Generates a starter guard, interceptor, service, layout, and feature — wired together into a working app, not just empty folders.
  5. Prints a clean summary of what was created.
✨ ngTooLazy

Creating Angular application...
✔ Angular project created

Creating architecture...
✔ core
✔ shared
✔ features
✔ layouts

Generating starter files...
✔ Auth Guard
✔ Auth Interceptor
✔ Api Service
✔ Main Layout
✔ Home Feature

Done.

Happy coding.

Installation

No installation required — run it with npx:

npx ng-toolazy new my-app

Or install it globally to use the shorter ngtl alias:

npm install -g ng-toolazy
ngtl new my-app

Generated architecture

src/
└── app/
    ├── core/
    │   ├── config/
    │   ├── guards/          # auth-guard.ts
    │   ├── interceptors/    # auth-interceptor.ts
    │   ├── providers/
    │   └── services/        # api.ts

    ├── shared/
    │   ├── components/
    │   ├── directives/
    │   ├── pipes/
    │   ├── models/
    │   ├── interfaces/
    │   ├── enums/
    │   └── utils/

    ├── features/
    │   └── home/             # starter feature, lazy-loaded

    ├── layouts/
    │   └── main/              # starter layout, wraps routed features

    ├── app.routes.ts          # layout + lazy-loaded feature wired together
    └── app.config.ts          # routing + the starter interceptor registered

The starter guard is generated but intentionally left unattached to any route — it's a correct, importable starting point, not a fabricated "protected route" you didn't ask for.

Templates are versioned internally (v20, v21, ...) and resolve against whichever Angular version actually gets installed, so generated code stays correct as Angular's own conventions evolve (e.g. Angular 21 dropping provideZoneChangeDetection by default).

Commands

CommandStatus
ngtl new <name>✅ Fully implemented
ngtl feature <name>🚧 Placeholder
ngtl layout <name>🚧 Placeholder
ngtl crud <name>🚧 Placeholder
ngtl service <name>🚧 Placeholder
ngtl guard <name>🚧 Placeholder
ngtl interceptor <name>🚧 Placeholder

Placeholder commands already appear in --help and accept the right arguments; they'll become real commands by reusing the same generation logic new already relies on, just with a user-supplied name instead of a fixed starter set.

Requirements

  • Node.js 22+
  • npm

Roadmap

  • Standalone feature / layout / service / guard / interceptor commands
  • crud, doctor, update commands
  • CSS option selection (SCSS is currently the only default)
  • Plugin system and custom templates
  • User configuration file

Contributing

Issues and pull requests are welcome at github.com/Iram0598/ng-toolazy.

License

MIT