ngTooLazy
August 1, 2026 · View on GitHub
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>:
- Installs the Angular CLI globally if it isn't already available.
- Runs
ng newto scaffold a standalone, routed Angular application. - Generates a predefined
core/shared/features/layoutsarchitecture undersrc/app. - Generates a starter guard, interceptor, service, layout, and feature — wired together into a working app, not just empty folders.
- 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
| Command | Status |
|---|---|
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/interceptorcommands crud,doctor,updatecommands- 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.