Skip to content
Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

274 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

E-commerce-MEAN-project

GitHub stars GitHub forks GitHub issues Last commit Angular Tailwind CSS TypeScript

πŸ“‘ Table of Contents

πŸ“ Description

E-commerce-MEAN-project β€” a frontend web app built with Angular, Tailwind CSS, TypeScript.

✨ Features

  • πŸ” JWT Authentication & Authorization
  • πŸ‘€ Customer, Seller, and Admin Roles
  • πŸ›οΈ Product Management
  • πŸ“‚ Categories
  • πŸ›’ Shopping Cart
  • ❀️ Wishlist
  • ⭐ Product Reviews & Ratings
  • πŸ“¦ Order Management
  • πŸ’³ Stripe Payment Integration
  • πŸ“§ Email Verification
  • ☁️ Cloudinary Image Upload
  • πŸ”Ž Search & Filtering
  • πŸ“± Responsive Design

πŸ“Έ Screenshots

hero door handle

catgories

dashboard

home

orders

products

πŸ› οΈ Tech Stack

  • πŸ…°οΈ Angular
  • 🌬️ Tailwind CSS
  • πŸ“˜ TypeScript

Notable libraries: Stripe, Vitest

πŸ—οΈ Architecture

A high-level overview of the system architecture.

flowchart LR

    A["πŸ‘€ User / Browser"]

    B["πŸ–ΌοΈ Angular Frontend"]

    C["⚑ Express.js REST API"]

    D["πŸƒ MongoDB"]

    E["☁️ Cloudinary"]

    F["πŸ’³ Stripe"]

    G["πŸ“§ Email Service"]

    A --> B
    B --> C

    C --> D
    C --> E
    C --> F
    C --> G
Loading

⚑ Quick Start

# 1. Clone the repository
git clone https://github.com/OmarAliSiad/E-commerce-MEAN-project.git

# 2. Install dependencies
npm install

# 3. Start the dev server
npm run start

πŸ“¦ Key Dependencies

@angular/common: ^21.2.0
@angular/compiler: ^21.2.0
@angular/core: ^21.2.0
@angular/forms: ^21.2.0
@angular/platform-browser: ^21.2.0
@angular/router: ^21.2.0
@stripe/stripe-js: ^9.0.0
rxjs: ~7.8.0
tslib: ^2.3.0

πŸš€ Available Scripts

  • ng β€” npm run ng
  • start β€” npm run start
  • build β€” npm run build
  • watch β€” npm run watch
  • test β€” npm run test

πŸ“ Project Structure

.
β”œβ”€β”€ client
β”‚   β”œβ”€β”€ angular.json
β”‚   β”œβ”€β”€ package.json
β”‚   β”œβ”€β”€ public
β”‚   β”‚   β”œβ”€β”€ favicon.ico
β”‚   β”‚   └── images
β”‚   β”‚       └── home
β”‚   β”‚           └── hero-door-handle.jpg
β”‚   β”œβ”€β”€ src
β”‚   β”‚   β”œβ”€β”€ app
β”‚   β”‚   β”‚   β”œβ”€β”€ app.config.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ app.css
β”‚   β”‚   β”‚   β”œβ”€β”€ app.html
β”‚   β”‚   β”‚   β”œβ”€β”€ app.routes.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ app.spec.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ app.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ core
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ guards
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ interceptors
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   └── services
β”‚   β”‚   β”‚   β”‚       └── ...
β”‚   β”‚   β”‚   β”œβ”€β”€ features
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ admin
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ auth
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cart
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ customer
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ home
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ orders
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ payment
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ products
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   └── seller
β”‚   β”‚   β”‚   β”‚       └── ...
β”‚   β”‚   β”‚   β”œβ”€β”€ layouts
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ admin-layout
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ customer-layout
β”‚   β”‚   β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”‚   β”‚   └── main-layout
β”‚   β”‚   β”‚   β”‚       └── ...
β”‚   β”‚   β”‚   └── shared
β”‚   β”‚   β”‚       β”œβ”€β”€ components
β”‚   β”‚   β”‚       β”‚   └── ...
β”‚   β”‚   β”‚       β”œβ”€β”€ directives
β”‚   β”‚   β”‚       β”‚   └── ...
β”‚   β”‚   β”‚       β”œβ”€β”€ models
β”‚   β”‚   β”‚       β”‚   └── ...
β”‚   β”‚   β”‚       └── pipes
β”‚   β”‚   β”‚           └── ...
β”‚   β”‚   β”œβ”€β”€ environments
β”‚   β”‚   β”‚   β”œβ”€β”€ environment.development.ts
β”‚   β”‚   β”‚   └── environment.ts
β”‚   β”‚   β”œβ”€β”€ index.html
β”‚   β”‚   β”œβ”€β”€ main.ts
β”‚   β”‚   └── styles.css
β”‚   β”œβ”€β”€ tsconfig.app.json
β”‚   β”œβ”€β”€ tsconfig.json
β”‚   └── tsconfig.spec.json
└── server
    β”œβ”€β”€ app.js
    β”œβ”€β”€ config
    β”‚   └── cloudinary.js
    β”œβ”€β”€ config.env.example
    β”œβ”€β”€ controllers
    β”‚   β”œβ”€β”€ authController.js
    β”‚   β”œβ”€β”€ cartController.js
    β”‚   β”œβ”€β”€ categoryController.js
    β”‚   β”œβ”€β”€ checkoutController.js
    β”‚   β”œβ”€β”€ orderController.js
    β”‚   β”œβ”€β”€ paymentController.js
    β”‚   β”œβ”€β”€ productController.js
    β”‚   β”œβ”€β”€ reviewController.js
    β”‚   └── userController.js
    β”œβ”€β”€ index.js
    β”œβ”€β”€ middlewares
    β”‚   β”œβ”€β”€ attachImageUrl.js
    β”‚   β”œβ”€β”€ authenticate.js
    β”‚   β”œβ”€β”€ errorHandler.js
    β”‚   β”œβ”€β”€ rateLimiter.js
    β”‚   β”œβ”€β”€ restrictTo.js
    β”‚   β”œβ”€β”€ upload.js
    β”‚   └── validate.js
    β”œβ”€β”€ models
    β”‚   β”œβ”€β”€ Cart.js
    β”‚   β”œβ”€β”€ Category.js
    β”‚   β”œβ”€β”€ Order.js
    β”‚   β”œβ”€β”€ Product.js
    β”‚   β”œβ”€β”€ Review.js
    β”‚   β”œβ”€β”€ User.js
    β”‚   └── payment.js
    β”œβ”€β”€ package.json
    β”œβ”€β”€ public
    β”‚   └── uploads
    β”‚       └── products
    β”‚           β”œβ”€β”€ 1774584941920-download.jpeg
    β”‚           └── 1774584941922-download.jpeg
    β”œβ”€β”€ routes
    β”‚   β”œβ”€β”€ authRoutes.js
    β”‚   β”œβ”€β”€ cartRoutes.js
    β”‚   β”œβ”€β”€ categoryRoutes.js
    β”‚   β”œβ”€β”€ checkoutRoutes.js
    β”‚   β”œβ”€β”€ orderRoutes.js
    β”‚   β”œβ”€β”€ paymentRoutes.js
    β”‚   β”œβ”€β”€ productRoutes.js
    β”‚   β”œβ”€β”€ reviewRoutes.js
    β”‚   └── userRoutes.js
    β”œβ”€β”€ schemas
    β”‚   β”œβ”€β”€ Category
    β”‚   β”‚   β”œβ”€β”€ createCategorySchema.js
    β”‚   β”‚   β”œβ”€β”€ index.js
    β”‚   β”‚   └── updateCategorySchema.js
    β”‚   β”œβ”€β”€ Order
    β”‚   β”‚   β”œβ”€β”€ createOrderSchema.js
    β”‚   β”‚   β”œβ”€β”€ index.js
    β”‚   β”‚   └── updateOrderStatusSchema.js
    β”‚   β”œβ”€β”€ Product
    β”‚   β”‚   β”œβ”€β”€ createProductSchema.js
    β”‚   β”‚   β”œβ”€β”€ index.js
    β”‚   β”‚   └── updateProductSchema.js
    β”‚   β”œβ”€β”€ User
    β”‚   β”‚   β”œβ”€β”€ createUserSchema.js
    β”‚   β”‚   β”œβ”€β”€ index.js
    β”‚   β”‚   β”œβ”€β”€ loginSchema.js
    β”‚   β”‚   β”œβ”€β”€ updateUserPasswordSchema.js
    β”‚   β”‚   └── updateUserSchema.js
    β”‚   └── payment
    β”‚       └── payment.schema.js
    β”œβ”€β”€ seed.js
    β”œβ”€β”€ services
    β”‚   β”œβ”€β”€ authServices.js
    β”‚   β”œβ”€β”€ cartService.js
    β”‚   β”œβ”€β”€ categoryService.js
    β”‚   β”œβ”€β”€ checkoutService.js
    β”‚   β”œβ”€β”€ emailService.js
    β”‚   β”œβ”€β”€ orderService.js
    β”‚   β”œβ”€β”€ paymentservice.js
    β”‚   β”œβ”€β”€ productService.js
    β”‚   └── userServices.js
    β”œβ”€β”€ templates
    β”‚   β”œβ”€β”€ orderPlaced.html
    β”‚   β”œβ”€β”€ orderStatus.html
    β”‚   β”œβ”€β”€ sellerApproved.html
    β”‚   └── verifyEmail.html
    β”œβ”€β”€ test-joi.js
    └── utils
        β”œβ”€β”€ APIError.js
        β”œβ”€β”€ checkPermissions.js
        β”œβ”€β”€ createTokenUser.js
        β”œβ”€β”€ jwt.js
        └── throwIfNotFound.js

πŸ› οΈ Development Setup

Node.js / JavaScript

  1. Install Node.js (v18+ recommended)
  2. Install dependencies: npm install (or yarn / pnpm install / bun install)
  3. Start the dev server: see the Quick Start above

πŸ§ͺ Testing

This project uses Vitest for testing.

npm run test

πŸ‘₯ Contributors

Thanks to everyone who has contributed to this project:

OmarAliSiad Ramadan-Elgamal mohamedahmed-dev elsayedfarg

See the full list of contributors β†’

πŸ‘₯ Contributing

Contributions are welcome! Here's the standard flow:

  1. Fork the repository
  2. Clone your fork: git clone https://github.com/OmarAliSiad/E-commerce-MEAN-project.git
  3. Branch: git checkout -b feature/your-feature
  4. Commit: git commit -m 'feat: add some feature'
  5. Push: git push origin feature/your-feature
  6. Open a pull request

Please follow the existing code style and include tests for new behavior where applicable.


License

This project is licensed under the MIT License - see the LICENSE file for details.

Releases

Packages

Contributors

Languages