- π Description
- πΈ Screenshots
- π οΈ Tech Stack
- ποΈ Architecture
- β‘ Quick Start
- π¦ Key Dependencies
- π Available Scripts
- π Project Structure
- π οΈ Development Setup
- π§ͺ Testing
- π₯ Contributors
- π€ Contributing
E-commerce-MEAN-project β a frontend web app built with Angular, Tailwind CSS, TypeScript.
- π 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
π °οΈ Angular- π¬οΈ Tailwind CSS
- π TypeScript
Notable libraries: Stripe, Vitest
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
# 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@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
- ng β
npm run ng - start β
npm run start - build β
npm run build - watch β
npm run watch - test β
npm run test
.
βββ 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
- Install Node.js (v18+ recommended)
- Install dependencies:
npm install(oryarn/pnpm install/bun install) - Start the dev server: see the Quick Start above
This project uses Vitest for testing.
npm run testThanks to everyone who has contributed to this project:
See the full list of contributors β
Contributions are welcome! Here's the standard flow:
- Fork the repository
- Clone your fork:
git clone https://github.com/OmarAliSiad/E-commerce-MEAN-project.git - Branch:
git checkout -b feature/your-feature - Commit:
git commit -m 'feat: add some feature' - Push:
git push origin feature/your-feature - Open a pull request
Please follow the existing code style and include tests for new behavior where applicable.
This project is licensed under the MIT License - see the LICENSE file for details.





