Mandola is a high-end, scalable multi-vendor Indian ethnic fashion marketplace application built using React 18, TypeScript, React Router v7, and Tailwind CSS.
- Storefront & Public Navigation: Interactive home page, product catalog with dynamic filter drawers, category browsing, product detail view, cart & wishlist side panels, and account dropdown.
- Customer Portal (
/dashboard/*): Overview, Profile management, Order history, Detailed order tracking timeline, Wishlist, Saved addresses, Review manager, and Invoices. - Seller Portal (
/seller/*): Overview with revenue charts, Product inventory & stock editor, Add/edit product wizard, Fulfillment & shipment tracking, Settlement statements, and Store settings. - Admin Portal (
/admin/*): Executive platform overview, User management (Block/Unblock), Seller approvals & suspensions, Product catalog audit, Platform financials, Settlement processor, Commission wallet, and System configuration. - Role-Based Protection:
ProtectedRouteguard enforcing role mappings:- Role
1→ Admin (/admin/*) - Role
2→ Seller (/seller/*) - Role
3→ Customer (/dashboard/*)
- Role
src/
├── assets/ # Static images and brand assets
├── components/ # UI Components
│ ├── common/ # Shared components (Header, Footer, ProductCard, MobileBottomNav)
│ ├── home/ # Home page sections (Hero, Featured, Categories, Banner, Trust)
│ ├── panels/ # Drawer & Modal overlays (CartPanel, WishlistPanel, AccountDropdown)
│ └── ui/ # Reusable Primitive UI components (shadcn/ui based)
├── constants/ # Static data & domain data definitions
│ ├── adminData.ts
│ ├── auth.constants.ts
│ ├── customerData.ts
│ ├── mockData.ts
│ └── sellerData.ts
├── contexts/ # Global React Contexts
│ ├── AuthContext.tsx # User session, login/logout, role resolution
│ └── UIContext.tsx # Cart, Wishlist, Drawers, Modals state
├── hooks/ # Custom Hooks (useAuth, useUI, useMobile)
├── layouts/ # Layout Wrappers with <Outlet />
│ ├── RootLayout.tsx # Global Context Providers & Root Outlet
│ ├── PublicLayout.tsx # Header, Footer, Drawers & Public Outlet
│ ├── CustomerLayout.tsx # Customer Dashboard Sidebar & Header Outlet
│ ├── SellerLayout.tsx # Seller Dashboard Sidebar & Header Outlet
│ └── AdminLayout.tsx # Admin Master Control Sidebar & Header Outlet
├── pages/ # Standalone Route Pages
│ ├── admin/ # 19 Admin Pages
│ ├── customer/ # 11 Customer Pages
│ ├── public/ # 4 Public Storefront Pages
│ └── seller/ # 13 Seller Pages
├── routes/ # React Router v7 Configuration
│ ├── ProtectedRoute.tsx # Role-Based Route Guard
│ ├── public.routes.tsx
│ ├── customer.routes.tsx
│ ├── seller.routes.tsx
│ ├── admin.routes.tsx
│ └── AppRouter.tsx # Central Router Definition
├── services/ # API Clients (Axios client stub)
├── styles/ # Global Styles & Tailwind Config
├── types/ # Domain TypeScript Types (auth, product, customer, seller, admin)
└── utils/ # Helper Functions (cn.ts)
- Node.js >= 18.x
- npm >= 9.x
# Clone the repository
git clone https://github.com/your-org/mandola.git
# Install dependencies
npm install
# Start local dev server
npm run dev- ROUTES.md - Detailed route mapping and access controls.
- ARCHITECTURE.md - Architectural design principles, data flow, and context providers.