π Enterprise-ready Angular 19 template with Tailwind CSS, 25+ features, and complete dark mode support.
- Button Component - Multiple variants (primary, secondary, danger, success, outline), sizes, and states
- Modal Component - Confirmation, info, and delete modals with service integration
- Toast Notifications - Success, error, warning, and info toasts with animations
- Icon Component - 13+ Heroicons with customizable sizes and colors
- Table Component - Sortable, paginated, filterable with sticky headers
- Loading Spinner - Elegant spinner with fade-in animations
- Skeleton Loader - Content placeholders for loading states
- Theme Toggle - Sun/Moon icon with smooth transitions
- HighlightDirective - Hover effects with customizable colors
- TooltipDirective - Smart positioning with viewport boundary detection
- ClickOutsideDirective - Detect clicks outside elements
- HighlightPipe - Text highlighting with search terms
- TimeAgoPipe - Relative time display (e.g., "2 hours ago")
- TruncatePipe - Text truncation with ellipsis
- FormatNumberPipe - Number formatting with localization
- Signal-based Theme Service - Reactive theme state management
- Persistent Theme - localStorage integration
- Full Coverage - All components support dark mode
- Smooth Transitions - Animated theme switching
- Enterprise Structure - Features, core, shared, store, layouts, models, constants, utils
- Authentication - JWT-based auth with guards and interceptors
- API Service - Centralized HTTP client with error handling
- State Management - NgRx store with effects and selectors
- Error Handling - Global error handler with logging service
- Loading State - Automatic loading indicators with interceptor
- Feature Flags - Runtime feature toggles for A/B testing
- Breadcrumb Service - Dynamic breadcrumb navigation
- Retry Logic - Automatic HTTP retry with exponential backoff
- Virtual Scrolling - Efficient rendering of large lists (10,000+ items)
- Drag & Drop - Sortable lists with visual feedback
- Multi-language Support - English and German translations
- 500+ Translation Keys - Comprehensive i18n coverage
- Language Switcher - Runtime language switching
- Home - Hero section with gradient and feature cards
- Components Demo - Interactive showcase of all components
- Features Demo - Table with pipes, directives, and filtering
- API Demo - CRUD operations with error handling
- Virtual Scroll Demo - Performance demo with 10,000 items
- Drag & Drop Demo - Interactive list sorting
- Login - Authentication demo page
- Admin Module - Lazy-loaded admin dashboard (users, settings)
- 404 Page - Stylish error page
- Node.js: 20.19.4 (see
.nvmrc) - npm: 10.x or higher
# Clone the repository
git clone https://github.com/heyding/angular-tailwind-template.git
# Navigate to project
cd angular-tailwind-template
# Install dependencies
npm install
# Copy environment file
cp .env.example .env
# Start dev server
npm startVisit http://localhost:4200 π
# Development server (http://localhost:4200)
npm start
# Production build
npm run build
# Run tests
npm test
# Code formatting
npm run format
# Linting
npm run lintsrc/app/
βββ core/ # Singleton services, guards, interceptors
β βββ guards/ # AuthGuard
β βββ interceptors/ # Auth, Error, Loading, Retry
β βββ services/ # API, Auth, Theme
β βββ handlers/ # Global error handler
β βββ models/ # Core interfaces
β βββ header/ # Header component
β βββ footer/ # Footer component
βββ features/ # Feature modules
β βββ home/ # Home feature (pages, components, store)
β βββ admin/ # Admin feature (lazy-loaded)
βββ shared/ # Reusable components, directives, pipes
β βββ components/ # Button, Modal, Toast, Table, Icon, etc.
β βββ directives/ # Highlight, Tooltip, ClickOutside
β βββ pipes/ # TimeAgo, Truncate, FormatNumber, Highlight
β βββ services/ # Modal, Toast, Loading, Logger, FeatureFlags
β βββ models/ # Shared interfaces
βββ store/ # NgRx global state
βββ layouts/ # Layout components (future)
βββ models/ # Global interfaces
βββ constants/ # App constants
βββ utils/ # Helper functions
import { ButtonComponent } from '@shared/components/button/button.component';
// In template
<app-button [variant]="'primary'" [size]="'md'" (clicked)="handleClick()">
Click Me
</app-button>import { ToastService } from '@shared/services/toast.service';
constructor(private toastService: ToastService) {}
showSuccess() {
this.toastService.success('Operation completed!');
}import { ModalService } from '@shared/services/modal.service';
constructor(private modalService: ModalService) {}
async confirmDelete() {
const result = await this.modalService.confirm({
title: 'Delete Item',
message: 'Are you sure?'
});
if (result) {
// User confirmed
}
}import { ThemeService } from '@core/services/theme.service';
constructor(private themeService: ThemeService) {}
toggleTheme() {
this.themeService.toggleTheme();
}
getCurrentTheme() {
return this.themeService.theme(); // Signal
}Navigate to these routes to see features in action:
/- Home page with hero section/components- All components showcase/features- Features demo with table/api- API integration demo/login- Authentication demo/virtual-scroll- Virtual scrolling demo/drag-drop- Drag & drop demo/admin- Admin dashboard (lazy-loaded)
Customize theme in tailwind.config.ts:
module.exports = {
darkMode: 'class', // Enable dark mode
theme: {
extend: {
colors: {
// Add custom colors
}
}
}
}See .env.example for available configuration options:
API_BASE_URL=http://localhost:3000
FEATURE_FLAG_DARK_MODE=true
LOG_LEVEL=debugAdd new languages in src/assets/i18n/:
en.json- English translationsde.json- German translations
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Generate coverage report
npm run test:coverage- β Standalone Components - All components use standalone API
- β Signals - Reactive state with Angular Signals
- β Functional Guards - Modern functional guard syntax
- β Strict TypeScript - Type safety enabled
- β Mobile-First - Responsive design approach
- β Accessibility - ARIA labels and keyboard navigation
- β Performance - Lazy loading, OnPush change detection
- β Code Style - Prettier + ESLint
npm run buildOutput in dist/angular-tailwind-template/
# Future: Dockerfile for containerized deploymentContributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'feat: add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available under the MIT License.
- Angular Team - Amazing framework
- Tailwind Labs - Beautiful utility-first CSS
- NgRx Team - Powerful state management
- Heroicons - Gorgeous SVG icons
Made with β€οΈ by Tommy Heyding