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