Skip to content

Modern e-commerce platform built with Angular 20, PrimeNG, and Tailwind CSS. Features include product catalog, shopping cart, wishlist, Stripe payment integration, JWT authentication, i18n (RTL/LTR), dynamic theming, and signal-based state management.

Notifications You must be signed in to change notification settings

MohamedV0/angular-ecommerce

Repository files navigation

πŸ›’ FreshCart - Modern E-Commerce Platform

FreshCart Icon

Full-Stack Angular E-Commerce Application

Angular PrimeNG Tailwind CSS

Final Project for Route Academy - Frontend Angular Developer Course


πŸ“Œ Overview

FreshCart is a production-ready e-commerce platform built with Angular 20, PrimeNG, and Tailwind CSS. The application delivers a complete shopping experienceβ€”from browsing products and managing wishlists to secure checkout with multiple payment methodsβ€”while showcasing enterprise-grade Angular development patterns including signal-based state management, comprehensive i18n with RTL support, dynamic theming, and optimized performance architecture.

Developed as the final project for Route Academy's Frontend Angular Developer course, FreshCart demonstrates real-world e-commerce functionality through standalone components, reactive programming, and a scalable feature-based architecture designed for production environments.


πŸ’« Interface Preview


πŸ› οΈ Tech Stack

Frontend Framework

Angular

UI & Styling

Tech Stack

State Management & Utilities

Tech Stack

Development Tools

Tech Stack


πŸ› οΈ Built With

  • ⚑ Angular 20.3.0 - Modern reactive framework with standalone components and signals
  • 🎨 PrimeNG 20.2.0 - Enterprise UI component library with 80+ components
  • πŸ’¨ Tailwind CSS 4.1.13 - Utility-first CSS framework for rapid UI development
  • 🌍 ngx-translate 17.0.0 - Internationalization library with multi-language support
  • πŸ“Š @ngrx/signals 20.0.1 - Signal-based state management for reactive stores
  • πŸ”„ RxJS 7.8.0 - Reactive programming library for async operations

✨ Core Features

πŸ›οΈ

Product Catalog
Browse paginated products, advanced search with filters, product details with image gallery, category & brand filtering

πŸ›’

Shopping Cart
Add/remove/update items, guest cart with localStorage sync, persistent cart state, real-time badge updates

πŸ’³

Checkout Process
Cash on delivery & Stripe payment, address selector with saved addresses, order confirmation pages

❀️

Wishlist
Add/remove favorite products, guest wishlist support, sync on login, visual indicators in product cards

πŸ”

Authentication
JWT-based auth with custom token header, login/register forms with validation, auth guards for protected routes

πŸ‘€

User Profile
Dashboard with stats, order history & details, address management, profile & password update

🌍

Internationalization
English & Arabic (472+ translations), full RTL/LTR support, runtime language switching, PrimeNG i18n sync

🎨

Theme System
4 PrimeNG presets (Fresh, Premium, Vibrant, Natural), dark/light mode toggle, runtime theme switching

🏷️

Categories & Brands
Category list with subcategories, brand showcase, dedicated detail pages, filter products by category/brand

πŸ“±

Responsive Design
Mobile-first with breakpoints, PrimeNG MenuBar (desktop) & Drawer (mobile), Tailwind responsive utilities

⚑

Performance
Lazy-loaded feature routes, OnPush change detection, signal-based stores, optimized with computed signals

🎯

State Management
Signal stores for cart & wishlist, computed properties for derived state, guest state with localStorage persistence

🎨 Theme System

  • 🎨 4 Custom PrimeNG Presets: Fresh (Teal) β€’ Premium (Indigo) β€’ Vibrant (Orange) β€’ Natural (Emerald)
  • πŸŒ“ Dark/Light Mode: Each theme supports both color schemes
  • ⚑ Real-time Switching: Instant theme changes without page reload
  • πŸ’Ύ Persistent Preferences: Automatically saves user's theme choice
  • πŸ”„ RTL Compatible: Works seamlessly with Arabic layout

🌐 Internationalization

  • 🌍 Bilingual Support: English (LTR) and Arabic Ψ§Ω„ΨΉΨ±Ψ¨ΩŠΨ© (RTL)
  • πŸ“ 472+ Translations: Comprehensive language coverage
  • ⚑ Runtime Switching: Change language without page reload
  • 🎯 Context-Aware: Dynamic translations based on application state
  • πŸ’Ύ Persistent Selection: Saves user's language preference

πŸ—οΈ Project Structure

πŸ“¦ FreshCart
 ┣ πŸ“‚ src
 ┃ ┣ πŸ“‚ app
 ┃ ┃ ┣ πŸ“‚ core                    # Core functionality
 ┃ ┃ ┃ ┣ πŸ“‚ constants             # App-wide constants
 ┃ ┃ ┃ ┣ πŸ“‚ guards                # Route guards (auth, guest)
 ┃ ┃ ┃ ┣ πŸ“‚ interceptors          # HTTP interceptors
 ┃ ┃ ┃ ┣ πŸ“‚ layout                # Layout components (header, footer)
 ┃ ┃ ┃ ┣ πŸ“‚ models                # Core data models
 ┃ ┃ ┃ β”” πŸ“‚ services              # Core services (API, theme, i18n)
 ┃ ┃ ┣ πŸ“‚ features                # Feature modules
 ┃ ┃ ┃ ┣ πŸ“‚ auth                  # Authentication
 ┃ ┃ ┃ ┣ πŸ“‚ products              # Product catalog
 ┃ ┃ ┃ ┣ πŸ“‚ cart                  # Shopping cart
 ┃ ┃ ┃ ┣ πŸ“‚ checkout              # Checkout process
 ┃ ┃ ┃ ┣ πŸ“‚ wishlist              # User wishlist
 ┃ ┃ ┃ ┣ πŸ“‚ categories            # Category browsing
 ┃ ┃ ┃ ┣ πŸ“‚ brands                # Brand browsing
 ┃ ┃ ┃ ┣ πŸ“‚ profile               # User profile
 ┃ ┃ ┃ β”” πŸ“‚ home                  # Home page
 ┃ ┃ ┣ πŸ“‚ shared                  # Shared components & utilities
 ┃ ┃ ┃ ┣ πŸ“‚ components            # Reusable components
 ┃ ┃ ┃ ┣ πŸ“‚ pipes                 # Custom pipes
 ┃ ┃ ┃ ┣ πŸ“‚ validators            # Form validators
 ┃ ┃ ┃ β”” πŸ“‚ utils                 # Utility functions
 ┃ ┃ ┣ πŸ“‚ theme                   # PrimeNG theme presets
 ┃ ┃ ┣ πŸ“œ app.config.ts           # App configuration
 ┃ ┃ ┣ πŸ“œ app.routes.ts           # Route configuration
 ┃ ┃ β”” πŸ“œ app.ts                  # Root component
 ┃ ┣ πŸ“‚ assets                    # Static assets
 ┃ ┣ πŸ“‚ environments              # Environment configs
 ┃ β”” πŸ“œ styles.scss               # Global styles
 ┣ πŸ“‚ public
 ┃ β”— πŸ“‚ i18n                      # Translation files
 ┃   ┣ πŸ“œ en.json                 # English translations
 ┃   β”” πŸ“œ ar.json                 # Arabic translations
 ┣ πŸ“œ angular.json                # Angular CLI config
 ┣ πŸ“œ package.json                # Dependencies
 ┣ πŸ“œ tailwind.config.js          # Tailwind configuration
 β”” πŸ“œ tsconfig.json               # TypeScript config

πŸš€ Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

  • Node.js: v18.0.0 or later
  • npm: v9.0.0 or later (comes with Node.js)
  • Angular CLI: v20.3.3 or later
    npm install -g @angular/cli

Installation

  1. Clone the repository

    git clone https://github.com/MohamedV0/angular-ecommerce.git
  2. Navigate to the project directory

    cd angular-ecommerce
  3. Install dependencies

    npm install
  4. Start the development server

    npm start
    # or
    ng serve
  5. Open your browser

    Navigate to http://localhost:4200/

Note: The backend API is already configured and provided by Route Academy at https://ecommerce.routemisr.com/api/v1. No additional API configuration or keys are required.


πŸŽ“ Learning Outcomes

This project demonstrates proficiency in:

  • βœ… Angular Framework - Advanced concepts and patterns
  • βœ… TypeScript - Strong typing and modern features
  • βœ… State Management - Signals and RxJS
  • βœ… Component Design - Reusable, composable architecture
  • βœ… Responsive Design - Mobile-first approach
  • βœ… Internationalization - Multi-language support
  • βœ… Theming - Advanced customization
  • βœ… API Integration - RESTful services
  • βœ… Form Handling - Reactive forms with validation
  • βœ… Routing - Lazy loading and guards
  • βœ… Performance - Optimization techniques
  • βœ… Accessibility - WCAG compliance

Developed by Mohamed Ashraf as part of Route Academy - Frontend Angular Developer Course

GitHub Email LinkedIn Portfolio

About

Modern e-commerce platform built with Angular 20, PrimeNG, and Tailwind CSS. Features include product catalog, shopping cart, wishlist, Stripe payment integration, JWT authentication, i18n (RTL/LTR), dynamic theming, and signal-based state management.

Topics

Resources

Stars

Watchers

Forks