Skip to content

Mariem213/ME.Store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›οΈ ME.Store

Angular TypeScript Bootstrap RxJS

A modern, full-featured e-commerce web application built with Angular 19

Live Demo Β· Getting Started Β· Project Structure


πŸ“– About the Project

ME.Store is a responsive, single-page e-commerce application built with Angular 19. It provides a seamless online shopping experience β€” from browsing products to completing a purchase β€” with a clean, modern UI powered by Bootstrap 5 and Font Awesome icons.

The app follows Angular best practices: standalone components, lazy-loaded routes, HTTP interceptors for authentication, route guards for access control, and a service-oriented architecture for clean data management.

✨ Key Features

  • πŸ” Authentication β€” Login / Register with JWT token management via HTTP interceptor
  • πŸ›’ Shopping Cart β€” Add, remove, and update product quantities in real time
  • πŸ” Product Browsing β€” Browse, search, and filter products by category
  • πŸ“¦ Order Management β€” View order history and track order status
  • πŸ‘€ User Profile β€” Manage personal information and preferences
  • πŸ›‘οΈ Route Guards β€” Protected pages that require authentication
  • πŸ“± Fully Responsive β€” Mobile-first design using Bootstrap 5 grid

🎯 Target Users

User Type Description
Shoppers End customers who browse, search, and purchase products online
Guest Users Visitors who can browse the catalog without an account
Registered Users Authenticated customers with cart, orders, and profile access
Developers Teams looking for a scalable Angular e-commerce starter template

πŸš€ Deployment

Environment URL
Production https://me-store-nine.vercel.app/

πŸ–₯️ UI Screens

Below is an overview of the main screens in the application:

1. 🏠 Home Page

The landing page displaying featured products, promotional banners, and category highlights.

2. πŸ“‹ Product Listing Page

A grid/list view of all products with filtering by category, price range, and sorting options.

3. πŸ” Product Detail Page

A dedicated page per product showing images, description, price, stock status, and an "Add to Cart" button.

4. πŸ›’ Shopping Cart

A sidebar or full-page cart showing selected items, quantities, subtotal, and a checkout button.

5. πŸ” Login / Register Pages

Clean authentication forms with validation feedback and redirect-after-login support.

6. πŸ‘€ User Profile Page

Displays user information with options to edit personal details and change the password.

7. πŸ“¦ Orders Page

A history of past orders with statuses (Pending, Shipped, Delivered) and order details.

8. ❌ 404 Not Found Page

A friendly error page for unmatched routes.


πŸ“ Project Structure

my-store/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ components/          # Shared/reusable UI components
β”‚   β”‚   β”‚   β”œβ”€β”€ navbar/          #   Top navigation bar
β”‚   β”‚   β”‚   β”œβ”€β”€ footer/          #   Site footer
β”‚   β”‚   β”‚   β”œβ”€β”€ product-card/    #   Product card component
β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”œβ”€β”€ guards/              # Route guards (auth protection)
β”‚   β”‚   β”‚   └── auth.guard.ts
β”‚   β”‚   β”œβ”€β”€ interceptors/        # HTTP interceptors
β”‚   β”‚   β”‚   └── auth.interceptor.ts  # Attaches JWT to API requests
β”‚   β”‚   β”œβ”€β”€ pages/               # Lazy-loaded route pages
β”‚   β”‚   β”‚   β”œβ”€β”€ home/
β”‚   β”‚   β”‚   β”œβ”€β”€ products/
β”‚   β”‚   β”‚   β”œβ”€β”€ product-detail/
β”‚   β”‚   β”‚   β”œβ”€β”€ cart/
β”‚   β”‚   β”‚   β”œβ”€β”€ login/
β”‚   β”‚   β”‚   β”œβ”€β”€ register/
β”‚   β”‚   β”‚   β”œβ”€β”€ profile/
β”‚   β”‚   β”‚   β”œβ”€β”€ orders/
β”‚   β”‚   β”‚   └── not-found/
β”‚   β”‚   β”œβ”€β”€ services/            # Angular services (API, state)
β”‚   β”‚   β”‚   β”œβ”€β”€ auth.service.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ product.service.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ cart.service.ts
β”‚   β”‚   β”‚   └── order.service.ts
β”‚   β”‚   β”œβ”€β”€ app.component.ts     # Root component
β”‚   β”‚   β”œβ”€β”€ app.component.html
β”‚   β”‚   β”œβ”€β”€ app.component.css
β”‚   β”‚   β”œβ”€β”€ app.config.ts        # Application providers config
β”‚   β”‚   └── app.routes.ts        # Application routing
β”‚   β”œβ”€β”€ index.html               # HTML entry point
β”‚   β”œβ”€β”€ main.ts                  # Angular bootstrap
β”‚   └── styles.css               # Global styles
β”œβ”€β”€ public/                      # Static assets (images, icons)
β”œβ”€β”€ angular.json                 # Angular CLI configuration
β”œβ”€β”€ package.json
└── tsconfig.json

πŸ—„οΈ Database Schema

The following schema represents a typical REST API backend that would power this Angular frontend.

users Table

Column Type Description
id INT (PK) Unique user identifier
name VARCHAR(100) Full name
email VARCHAR(150) Unique email address
password_hash VARCHAR(255) Hashed password
role ENUM('user','admin') User role
created_at TIMESTAMP Account creation date

products Table

Column Type Description
id INT (PK) Unique product identifier
name VARCHAR(200) Product name
description TEXT Product description
price DECIMAL(10,2) Product price
stock INT Available quantity
category_id INT (FK) Reference to categories
image_url VARCHAR(500) Product image URL
created_at TIMESTAMP Date added

categories Table

Column Type Description
id INT (PK) Unique category identifier
name VARCHAR(100) Category name
slug VARCHAR(100) URL-friendly identifier

cart_items Table

Column Type Description
id INT (PK) Unique cart item identifier
user_id INT (FK) Reference to users
product_id INT (FK) Reference to products
quantity INT Item quantity
added_at TIMESTAMP When item was added

orders Table

Column Type Description
id INT (PK) Unique order identifier
user_id INT (FK) Reference to users
total_price DECIMAL(10,2) Order total
status ENUM('pending','shipped','delivered','cancelled') Order status
created_at TIMESTAMP Order date

order_items Table

Column Type Description
id INT (PK) Unique identifier
order_id INT (FK) Reference to orders
product_id INT (FK) Reference to products
quantity INT Purchased quantity
unit_price DECIMAL(10,2) Price at time of purchase

βš™οΈ Getting Started

Prerequisites

Make sure you have the following installed:

Tool Version Download
Node.js v18+ nodejs.org
npm v9+ Bundled with Node.js
Angular CLI v19 See below

Install Angular CLI globally:

npm install -g @angular/cli@19

πŸ”§ Installation

1. Clone the repository

git clone https://github.com/your-username/my-store.git
cd my-store

2. Install dependencies

npm install

3. Configure environment

Create src/environments/environment.ts:

export const environment = {
  production: false,
  apiUrl: 'http://localhost:3000/api'   // Your backend API URL
};

4. Start the development server

ng serve

Open your browser and navigate to http://localhost:4200. The app will automatically reload on file changes.


πŸ—οΈ Build for Production

ng build

The production-optimized output is placed in the dist/my-store/ directory, ready to be served from any static hosting platform (Netlify, Vercel, Firebase Hosting, AWS S3, etc.).


πŸ§ͺ Running Tests

# Unit tests
ng test

# Single run (CI mode)
ng test --watch=false --browsers=ChromeHeadless

πŸ› οΈ Tech Stack

Layer Technology
Framework Angular 19 (Standalone Components)
Language TypeScript 5.7
Styling Bootstrap 5.3 + Bootstrap Icons
Icons Font Awesome 7
HTTP Client Angular HttpClient + RxJS 7.8
Routing Angular Router (Lazy Loading)
Auth JWT via HTTP Interceptor

🀝 Contributing

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

πŸ“„ License

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


Made with ❀️ using Angular 19

Releases

No releases published

Packages

 
 
 

Contributors