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:ssr
docker 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