🚀 Scaffold Angular features following Clean Architecture principles with NgRx SignalStore.
A powerful CLI that generates production-ready Angular features structured into Domain, Infrastructure, Application, and UI layers — keeping your codebase maintainable, testable, and scalable.
# Global installation (recommended)
npm install -g @devmed555/angular-clean-architecture-cli
# Verify installation
aca --version- Node.js v20+
- Angular 21+ project
- @ngrx/signals installed:
npm install @ngrx/signals
# 1. Generate all features defined in feature-schema.json
aca g feature
# 2. Generate a single feature with attributes
aca g feature product --attributes="name:string,price:number"
# 3. Generate ALL core assets (Auth, Navbar, Menu, etc.)
aca g core
# 4. Generate ALL shared components
aca g shared| Command | Description |
|---|---|
aca g feature |
Generates Clean Architecture features (4 layers) |
aca g core |
Generates core system assets (Auth, Guards, Services) |
aca g shared |
Generates shared UI components & utilities |
Creates a structure with Domain, Infrastructure, Application, and UI layers.
# Interactive mode
aca g feature
# With inline attributes
aca g feature product --attributes="name:string,price:number,active:boolean"
# From blueprint file
aca g feature --blueprint=./order.jsonRunning aca g core without arguments automatically generates ALL core assets:
- Auth: Service with login/logout logic
- Navbar: Top navigation component
- Menu: Side navigation component
- Theme Selector: Dark/Light mode toggle
- Language Selector: i18n switcher
- Translate: Translation setup
| Asset | Description |
|---|---|
navbar |
Top navigation bar |
menu |
Side navigation menu |
theme-selector |
Dark/light theme toggle |
language-selector |
Language switcher component |
translate |
i18n translation setup |
auth |
Authentication service with login/logout |
Running aca g shared without arguments automatically generates standard shared components:
- Confirm Dialog: Reusable confirmation modal
- Confirm Dialog: Reusable confirmation modal
For complex features with multiple models, use a JSON blueprint:
{
"name": "shop",
"models": [
{
"name": "Product",
"attributes": [{ "name": "price", "type": "number" }]
},
{
"name": "Cart",
"attributes": [{ "name": "total", "type": "number" }]
}
]
}aca g feature --blueprint=./shop.json- Unit Test Templates: Comprehensive tests for all layers
- Custom Types (UML): Generate features from UML/PlantUML models
- MCP Server: AI integration for smarter code generation
Generated features follow Clean Architecture (Hexagonal Architecture) principles:
┌─────────────────────────────────────────────────────────┐
│ UI Layer │
│ (Components, Templates, Styles) │
├─────────────────────────────────────────────────────────┤
│ Application Layer │
│ (NgRx SignalStore, Selectors) │
├─────────────────────────────────────────────────────────┤
│ Infrastructure Layer │
│ (HTTP Services, API Clients) │
├─────────────────────────────────────────────────────────┤
│ Domain Layer │
│ (Interfaces, Types, Business Rules) │
└─────────────────────────────────────────────────────────┘
- Domain: Pure TypeScript, zero dependencies
- Infrastructure: Depends on Domain
- Application: Depends on Infrastructure + Domain
- UI: Depends on Application
When using within an Nx monorepo:
# Generate feature using Nx
nx g cli:feature product
# Generate core assets
nx g cli:core
# Generate shared components
nx g cli:sharedMIT © Mohamed Bouattour