A modern, high-performance e-commerce platform built with Angular 19, PrimeNG, and Tailwind CSS v4.
- ποΈ Product Catalog - Advanced filtering, search, and pagination
- π Shopping Cart - Persistent cart with real-time updates
- π³ Checkout Process - Multi-step checkout with payment integration
- π€ User Accounts - Registration, login, profile management
- π¦ Order Tracking - Real-time order status and delivery tracking
- β Reviews & Ratings - Product reviews and rating system
- π Wishlist - Save favorite products for later
- π Dashboard - Sales analytics and key performance indicators
- π¦ Product Management - CRUD operations with image management
- π Order Management - Order processing and fulfillment
- π₯ Customer Management - User accounts and customer analytics
- π Reports - Sales reports and business intelligence
- βοΈ Settings - Store configuration and preferences
- π Server-Side Rendering (SSR) - Optimized for SEO and performance
- π± Responsive Design - Mobile-first approach with Tailwind CSS
- β‘ Angular Signals - Modern reactive state management
- π¨ Modern UI - PrimeNG components with custom Tailwind styling
- π Authentication - JWT-based authentication with route guards
- π Real-time Updates - Live inventory and order status
- π Dark Mode - Theme switching capability
- Framework: Angular 19 with Standalone Components
- UI Library: PrimeNG 19 with Aura Theme
- Styling: Tailwind CSS v4 with Lightning CSS
- State Management: Angular Signals
- HTTP Client: Axios with interceptors
- Notifications: NGX-Toastr
- Icons: PrimeIcons
- Language: TypeScript 5.7
- Build Tool: Angular CLI with Vite
- Package Manager: npm
- Linting: ESLint + Prettier
- Testing: Jasmine + Karma
- CI/CD: GitHub Actions
- Node.js 18+
- npm 8+
- Git
-
Clone the repository
git clone https://github.com/yourusername/techmart-app.git cd techmart-app -
Install dependencies
npm install
-
Start development server
npm start
-
Open your browser
http://localhost:4200
| Command | Description |
|---|---|
npm start | Start development server |
npm run build | Build for production |
npm run build:ssr | Build with server-side rendering |
npm test | Run unit tests |
npm run test:watch | Run tests in watch mode |
npm run e2e | Run end-to-end tests |
npm run lint | Run ESLint |
npm run format | Format code with Prettier |
src/ βββ app/ β βββ core/ # Core functionality β β βββ guards/ # Route guards β β βββ interceptors/ # HTTP interceptors β β βββ models/ # TypeScript interfaces β β βββ services/ # Core services β βββ features/ # Feature modules β β βββ auth/ # Authentication β β βββ catalog/ # Product catalog β β βββ cart/ # Shopping cart β β βββ checkout/ # Checkout process β β βββ dashboard/ # Admin dashboard β β βββ orders/ # Order management β β βββ users/ # User management β βββ layout/ # Layout components β β βββ header/ # Navigation header β β βββ footer/ # Footer β β βββ sidebar/ # Navigation sidebar β βββ services/ # Business logic services β β βββ auth/ # Authentication service β β βββ cart/ # Cart service with Signals β β βββ catalog/ # Product service β β βββ orders/ # Order service β βββ shared/ # Shared components β βββ components/ # Reusable components β βββ directives/ # Custom directives β βββ pipes/ # Custom pipes βββ assets/ # Static assets βββ environments/ # Environment configs βββ styles.css # Global styles TechMart uses Angular Signals for reactive state management:
@Injectable({ providedIn: "root", }) export class CartService { private _items = signal<CartItem[]>([]); private _loading = signal(false); // Public readonly signals readonly items = this._items.asReadonly(); readonly loading = this._loading.asReadonly(); readonly totalItems = computed(() => this._items().length); readonly totalPrice = computed(() => this._items().reduce((sum, item) => sum + item.price * item.quantity, 0)); // Actions addItem(product: Product, quantity = 1) { this._items.update((items) => { const existingItem = items.find((item) => item.productId === product.id); if (existingItem) { return items.map((item) => (item.productId === product.id ? { ...item, quantity: item.quantity + quantity } : item)); } return [...items, { productId: product.id, quantity, ...product }]; }); } }The project uses a layered CSS approach with proper ordering:
/* styles.css */ @import "tailwindcss"; @plugin "tailwindcss-primeui"; /* CSS Layer Order: theme, base, primeng */- Use standalone components
- Implement OnPush change detection
- Follow Angular style guide
- Use Signals for reactive state
- Mobile-first responsive design
- Use Tailwind utility classes
- Leverage PrimeNG components
- Maintain consistent spacing (4px grid)
- Write unit tests for services
- Use TypeScript strict mode
- Follow ESLint rules
- Document complex logic
npm run build:ssrdocker build -t techmart-app . docker run -p 80:80 techmart-app| Variable | Description | Default |
|---|---|---|
API_URL | Backend API URL | http://localhost:3000/api |
NODE_ENV | Environment | development |
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Follow Conventional Commits:
feat:new featuresfix:bug fixesdocs:documentation changesstyle:formatting changesrefactor:code refactoringtest:adding testschore:maintenance tasks
| Browser | Version |
|---|---|
| Chrome | 111+ |
| Firefox | 128+ |
| Safari | 16.4+ |
| Edge | 111+ |
- β‘ 5x faster full builds with Tailwind CSS v4
- π 100x faster incremental builds
- π¦ Tree-shaking with standalone components
- ποΈ Optimized bundles with Angular CLI
This project is licensed under the MIT License - see the LICENSE file for details.
- Payment gateway integration (Stripe, PayPal)
- Multi-language support (i18n)
- PWA capabilities
- Advanced analytics dashboard
- Mobile app with Ionic
- Microservices backend
- AI-powered product recommendations
- π§ Email: support@techmart.com
- π¬ Discord: TechMart Community
- π Documentation: docs.techmart.com
- π Issues: GitHub Issues
Made with β€οΈ by Miguel Barreto