ShopCart is a sleek, production-ready e-commerce frontend web app built with Next.js, TypeScript, React-Redux and Redux Toolkit. It features a clean, responsive design and a fully functional shopping cart and wishlist system, delivering a modern and seamless user experience.
Live Demo: Go Live
- Modern Tech Stack: Built with Next.js 15 (App Router), React 18, and TypeScript for a type-safe, performant, and scalable application.
- Comprehensive E-commerce UI: Includes a homepage with category highlights, category-specific product listing pages, a shopping cart, and a wishlist.
- Dynamic & Responsive Design: Styled with Tailwind CSS and ShadCN UI components for a polished, responsive user experience that looks great on all devices.
- Real-time Cart & Wishlist: Utilizes Firebase Firestore to persist user cart and wishlist data, even for anonymous users, with real-time updates.
- Offline Support: Stores cart and wishlist data in Redux state to maintain user actions, ensuring a smoother user experience even with intermittent network connectivity.
- Light/Dark Mode: Theme-toggling and persistence with next-theme across sessions for a polished user experience.
- Framework: Next.js (App Router)
- Language: TypeScript
- Styling: Tailwind CSS & ShadCN UI
- Theme Management: next-themes
- Icons: Lucide React
- Product Data: DummyJSON API
-
Redux Toolkit - Modern Redux with simplified syntax to manage cart and wishlist states globally.
-
React Redux - React bindings for Redux.
🎯 UI Components:
- Lucide React – Icon library.
- Embla Carousel – Image/slider carousel.
- React Hook Form + Zod – Form handling with validation.
- React Day Picker – Date picker component.
⚙️ Utilities:
- date-fns – Date manipulation.
- uuid – Unique ID generation.
- next-themes – Dark/light theme support.
The Redux implementation handles:
-
Adding/removing items from cart
-
Updating item quantities
-
Adding/removing items from wishlist
-
Checkout process and order management
-
Synchronizing state with Firebase Firestore
-
Managing theme preferences
-
Handling loading states and errors
Installation & Running Locally
Clone the repository and install the dependencies:
git clone
npm installThen, run the development server:
npm run devOpen http://localhost:3000 with your browser to see the result.
This project is licensed under the MIT License



