Keep the template as-is to explore:
- ✅ Authentication flow (login, register, forgot password)
- ✅ Route guards implementation
- ✅ Form validation with signals
- ✅ Component structure examples
- ✅ Service patterns
npm install
npm startVisit http://localhost:4200 and explore the demo pages.
Remove all demo content with two modes:
Perfect for dashboards and admin panels. Keeps full layout structure.
npm install
npm run clean-template:dashboard
npm startWhat you get:
- ✨ Complete layout (header, sidebar, footer)
- ✨ Dashboard-style welcome page
- ✨ Professional navigation structure
- ✨ Ready to add your features!
Perfect for custom designs. Minimal scaffold with no layout.
npm install
npm run clean-template:blank
npm startWhat you get:
- ✨ Minimal single page
- ✨ No predefined layout
- ✨ Maximum flexibility
- ✨ Build from scratch!
Not sure? Let the script ask you:
npm install
npm run clean-template
# Choose 1 (Dashboard) or 2 (Blank)
npm startBoth modes keep:
- ✨ All configuration (TailwindCSS, DaisyUI, TypeScript, .cursorrules)
- ✨ Shared utilities (notification, spinner)
- ✨ Beautiful welcome page
angularvibecoding/
├── src/app/
│ ├── core/ # Core layout components
│ │ ├── header/ # Top navigation
│ │ ├── footer/ # Page footer
│ │ ├── sidenav/ # Side navigation
│ │ ├── layout/ # Main layout wrapper
│ │ ├── home/ # Clean home page
│ │ └── not-found/ # 404 page
│ │
│ ├── shared/ # Reusable utilities
│ │ ├── services/ # Shared services
│ │ ├── notification/ # Notification system
│ │ └── spinner/ # Loading spinner
│ │
│ ├── app.routes.ts # Clean routing config
│ └── app.config.ts # App configuration
│
├── docs/ # Documentation
│ ├── best-practices.md # Coding standards
│ └── setup.md # AI setup guide
│
├── scripts/ # Utility scripts
│ ├── clean-template.js # Template cleanup
│ └── README.md # Script documentation
│
├── .cursorrules # AI assistant rules
├── package.json # Dependencies
└── README.md # This file
# Development server
npm start
# Build for production
npm run build
# Run tests
npm test
# Clean template (remove demos)
npm run clean-template
# Generate new component
ng generate component features/my-feature
# Generate new service
ng generate service features/my-service- Standalone components (no NgModules)
- Angular Signals for state management
- Native control flow (
@if,@for,@switch) - OnPush change detection everywhere
- TailwindCSS 4 fully integrated
- DaisyUI components ready to use
- SCSS for component-specific styles
- Responsive design out of the box
.cursorrulesfor Cursor AI- Comprehensive documentation
- Best practices built-in
- Type-safe throughout
- Signal-based reactivity
- Lazy loading ready
- Optimized change detection
- Production-ready build config
This project does NOT use standard Angular suffixes:
- ✅
login.ts(notlogin.component.ts) - ✅
auth.ts(notauth.service.ts) - ✅
auth-guard.ts(notauth.guard.ts)
Use modern Angular control flow:
<!-- ✅ DO THIS -->
@if (isVisible()) {
<div>Content</div>
} @for (item of items(); track item.id) {
<div>{{ item.name }}</div>
}
<!-- ❌ DON'T DO THIS -->
<div *ngIf="isVisible()">Content</div>
<div *ngFor="let item of items()">{{ item.name }}</div>Use inject() and signals:
import { Component, signal, computed, inject } from "@angular/core";
@Component({
selector: "app-example",
templateUrl: "./example.html",
styleUrl: "./example.scss",
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class Example {
// Use inject() instead of constructor injection
private router = inject(Router);
// Use signals for state
count = signal(0);
doubleCount = computed(() => this.count() * 2);
// Use input() and output() functions
title = input<string>("Default");
clicked = output<void>();
}- Choose your path: Keep examples or clean template
- Read the docs: Check
docs/best-practices.md - Review .cursorrules: Understand the coding standards
- Start building: Create your first feature!
- Check
docs/best-practices.mdfor coding examples - Review
.cursorrulesfor project conventions - Look at existing components for patterns
- Read
scripts/README.mdfor script documentation
Happy coding! 🎉