A modern eCommerce application built with React, TypeScript, Axios, and MockAPI.
Kaamna is a complete frontend eCommerce experience featuring product browsing, search, cart management, delivery selection, checkout flow, order placement, order history, and package tracking.
This project was originally built using Vanilla JavaScript and later fully migrated to React + TypeScript to improve scalability, maintainability, and developer experience.
π Live Application
https://react-ecommerce-project-xi.vercel.app/
Experience the complete Kaamna eCommerce workflow:
- Browse products
- Search products in real-time
- Add items to cart
- Update quantities
- Select delivery options
- Place orders
- View order history
- Track orders
Deployed on Vercel.
The primary shopping experience featuring product discovery, search, cart management, and responsive product cards.
Fully responsive mobile layout with a dedicated navigation experience and mobile-optimized product browsing.
Instant product suggestions while typing, allowing users to quickly discover products.
Custom-designed empty cart experience encouraging users to continue shopping.
Complete checkout workflow featuring:
- Order summary
- Delivery option selection
- Dynamic shipping costs
- Tax calculations
- Total order computation
Users can review previous orders, view delivery information, and access order tracking.
Track individual orders with delivery progress visualization and estimated arrival information.
- Browse products from backend API
- Responsive product grid
- Product ratings
- Product pricing
- Dynamic rendering using React components
- Real-time search suggestions
- Case-insensitive matching
- Displays top matching products
- Updates instantly as user types
- Add products with selected quantity
- Updates existing cart items automatically
- Prevents duplicate entries
- Quantity validation
- Integer-only values
- Range validation (1β10)
- Remove products from cart
- Updates backend and UI instantly
Users can select between multiple delivery options.
Features:
- Delivery date calculation
- Shipping cost display
- Delivery option updates persisted to backend
- Loading states while updating
- Order summary
- Shipping calculations
- Delivery calculations
- Total cost calculation
- Order placement
After placing an order:
- Order gets created in backend
- Cart is cleared
- User is redirected to Orders Page
Orders page displays:
- Order Date
- Order ID
- Ordered Products
- Quantity
- Delivery Information
Track individual orders.
Displays:
- Product Details
- Quantity
- Estimated Arrival Date
- Delivery Progress UI
Implemented loading states for:
- Initial data fetching
- Delivery option updates
- Quantity updates
- Cart item deletion
- Order placement
- Functional Components
- Props
- Component Composition
- Conditional Rendering
- Lists & Keys
- Controlled Inputs
- State Lifting
- useState
- useEffect
- useRef
- Interfaces
- Type-safe API calls
- Typed React Props
- Generics
- Utility Types
- Axios
- Async / Await
- Promise.all
- REST APIs
- React Router
- Route Parameters
- Query Parameters
- Navigation
Shared state architecture:
App
β
βββ HomePage
β βββ Product Cards
β
βββ CheckoutPage
β βββ Cart Summary
β βββ Payment Summary
β
βββ OrderPage
β
βββ TrackingPageState is lifted to the App component and shared across pages through props.
src
β
βββ Components
β βββ HomePage
β βββ CheckoutPage
β βββ OrderPage
β βββ TrackingPage
β βββ SkeletonLoad
β βββ Shared Components
β
βββ Services
β βββ productApi.ts
β βββ cartApi.ts
β βββ orderApi.ts
β βββ deliveryOptionApi.ts
β βββ deliveryOptionsApi.ts
β
βββ Types
β βββ product.ts
β βββ cart.ts
β βββ order.ts
β
βββ Utility
β βββ formatCurrency.ts
β
βββ App.tsx
βββ main.tsxThe application uses MockAPI for backend services.
GET /productsGET /cart
POST /cart
PUT /cart/:id
DELETE /cart/:idGET /orders
POST /ordersGET /delivery-optionsUser Clicks Add To Cart
β
handleAddToCart()
β
Check Existing Item
β β
Yes No
β β
Update Qty Create Item
β β
Update State Locally
β
UI Re-rendersUser Clicks
"Fulfill Your Desire"
β
Create Order
β
Store In Orders API
β
Delete Cart Items
β
Clear Cart State
β
Navigate To Orders PageOne of the biggest goals of this project was migrating a complete eCommerce application from:
Vanilla JavaScript
β
React + TypeScriptThis migration required:
- Component architecture design
- State management redesign
- Event handling refactor
- API integration refactor
- TypeScript adoption
Instead of refetching the cart after every update:
POST
β
GET Cart Again βThe application updates local state directly:
POST
β
Update State Locally β
This reduces network requests and improves responsiveness.
Through this project I gained hands-on experience with:
- React Architecture
- TypeScript
- API Integration
- State Management
- Routing
- Async JavaScript
- Component Design
- Frontend Debugging
- CRUD Operations
- Project Structuring
- React
- TypeScript
- CSS3
- Axios
- React Router DOM
- Day.js
- MockAPI
- Vite
Clone the repository:
git clone https://github.com/yk-09/kaamna-ecommerce.gitMove into project:
cd kaamna-ecommerceInstall dependencies:
npm installStart development server:
npm run devBuild production version:
npm run buildFrontend Developer
- LinkedIn: LinkedIn URL
- GitHub: https://github.com/yk-09
- Authentication
- User Profiles
- Wishlist
- Product Reviews
- Context API / Zustand
- Payment Gateway Integration
- Backend Migration from MockAPI
- Order Status Synchronization
- Admin Dashboard
Consider giving the repository a star.
It helps more people discover the project and motivates future improvements.
Kaamna πΏ





