A modern, full-featured grocery delivery web application built with Next.js 16, TypeScript, Tailwind CSS v4, Zustand, and Zod. Features a complete e-commerce experience with authentication, product browsing, shopping cart, and order management.
- Splash Screen - Initial loading screen with smooth transitions
- Onboarding - Welcome screen with brand introduction
- Phone Number Authentication - OTP-based verification with country selector
- Email/Password Login - Traditional authentication flow
- Social Login - Google and Facebook integration (simulated)
- User Registration - Complete sign-up with validation
- Home Page - Featured products, categories, and deals
- Product Catalog - Browse products by category
- Product Details - Detailed product pages with images, descriptions, and reviews
- Search & Filter - Find products quickly
- Favorites - Save favorite products for quick access
- Shopping Cart - Add, remove, and manage cart items
- Quantity Management - Increment/decrement product quantities
- Checkout Flow - Delivery and payment method selection
- Payment Gateway - Simulated payment processing
- Order Success - Confirmation page with order tracking
- Order Failure - Error handling with retry options
- Account Management - User profile and settings
- Location Selection - Choose delivery zone and area
- Order History - Track past orders
- Responsive Design - Mobile-first, desktop-optimized
- Cursor Pointer - All interactive elements have proper cursor styling
- Loading States - Smooth loading indicators
- Toast Notifications - User feedback with react-hot-toast
- Form Validation - Real-time validation with Zod schemas
- Accessibility - ARIA labels and keyboard navigation support
- Framework: Next.js 16.1.1 (App Router)
- Language: TypeScript 5 (Strict Mode)
- Styling: Tailwind CSS v4
- State Management: Zustand 5.0.9
- Form Validation: Zod 4.3.5 + React Hook Form 7.70.0
- Notifications: React Hot Toast 2.6.0
- Fonts: Custom Gilroy font family (Light & ExtraBold)
- No UI Libraries: Pure Tailwind CSS implementation
- Node.js 18+
- npm or yarn
-
Install dependencies
npm install
-
Run development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
-
Build for production
npm run build npm start
βββ app/ # Next.js App Router pages
β βββ account/ # User account page
β βββ cart/ # Shopping cart page
β βββ explore/ # Product exploration page
β βββ favorites/ # Favorite products page
β βββ home/ # Home page with products
β βββ location/ # Location selection
β βββ login/ # Email/password login
β βββ onboarding/ # Welcome/onboarding screen
β βββ order-failure/ # Order failure page
β βββ order-success/ # Order success confirmation
β βββ otp/ # OTP verification
β βββ payment-gateway/ # Payment processing
β βββ phone-number/ # Phone number input
β βββ product/[id]/ # Dynamic product detail page
β βββ sign-in/ # Sign in with phone/social
β βββ sign-up/ # User registration
β βββ splash/ # Splash screen
β βββ layout.tsx # Root layout with SEO metadata
β βββ page.tsx # Root page (redirects to splash)
β βββ globals.css # Global styles and theme
βββ components/ # Reusable components
β βββ icons/ # Icon components
β β βββ NavigationIcons.tsx
β βββ layout/ # Layout components
β β βββ BottomNav.tsx # Mobile bottom navigation
β β βββ DesktopNav.tsx # Desktop navigation
β β βββ Navbar.tsx # Main navbar
β βββ shop/ # Shopping components
β β βββ CategoryCard.tsx # Category display card
β β βββ ProductCard.tsx # Product display card
β βββ ui/ # UI components
β βββ Button.tsx # Primary button component
β βββ CountrySelector.tsx # Country selection dropdown
β βββ Input.tsx # Form input component
β βββ NumericKeypad.tsx # Numeric keypad for OTP
β βββ OTPInput.tsx # OTP input component
β βββ QuantityButton.tsx # Quantity increment/decrement
β βββ Select.tsx # Select dropdown component
β βββ Skeleton.tsx # Loading skeleton component
βββ store/ # Zustand state stores
β βββ authStore.ts # Authentication state
β βββ cartStore.ts # Shopping cart state
β βββ locationStore.ts # Location state
β βββ otpStore.ts # OTP verification state
β βββ productStore.ts # Product state
βββ data/ # Static data
β βββ products.ts # Product data
βββ lib/ # Utility functions
β βββ zod-schemas.ts # Zod validation schemas
βββ types/ # TypeScript type definitions
β βββ index.ts
βββ public/ # Static assets
βββ assets/ # Images and icons
- Primary Color:
#53B175(Green) - Used for buttons, links, and accents - Typography:
- Gilroy Light (300) - Body text
- Gilroy ExtraBold (800) - Headings
- Border Radius:
rounded-2xl(16px) for inputs and buttons - Spacing: Consistent Tailwind spacing scale
- Interactive Elements: All buttons have
cursor: pointerfor better UX - Color Palette:
- Background: White (
#ffffff) - Text Primary: Dark gray (
#171717) - Gray Scale: 50-900 for various UI elements
- Background: White (
- β Splash screen with auto-redirect
- β Onboarding/Welcome screen
- β Phone number validation (Bangladesh format: +880)
- β OTP input with 4-digit code verification
- β Email validation with live feedback
- β Password visibility toggle
- β Social login simulation (Google & Facebook)
- β Location selection with zones and areas
- β User registration with comprehensive validation
- β Product catalog with categories
- β Product detail pages
- β Shopping cart functionality
- β Add to favorites
- β Quantity management
- β Search and filter products
- β Checkout flow
- β Payment gateway simulation
- β Order success/failure pages
- β Form validation with Zod schemas
- β
TypeScript strict mode (no
anytypes) - β Zustand state management with persistence
- β Responsive design (mobile-first, desktop-optimized)
- β SEO optimization with metadata
- β Cursor pointer on all interactive elements
- β Loading states and error handling
- β Toast notifications for user feedback
- Splash Screen β Shows for 2 seconds, then redirects
- Onboarding β Welcome screen with "Get Started" button
- Sign In β Choose phone number or social login
- Phone Number β Enter mobile number (+880 format)
- OTP Verification β Enter 4-digit code
- Location Selection β Select zone and area
- Home β Main shopping application
- Login β Direct email/password login
- Sign Up β Create new account with validation
- Guest Mode β Browse products without authentication
- Home/Explore β Browse products and categories
- Product Details β View product information
- Add to Cart β Add products with quantity
- Cart β Review items and proceed to checkout
- Checkout β Select delivery and payment methods
- Payment β Process payment (simulated)
- Order Confirmation β View order success/failure
- All authentication is simulated (no backend required)
- OTP accepts any 4-digit code for demo purposes
- Social login simulates API calls with loading delays
- Location data is mocked with predefined zones and areas
- Payment processing is simulated for demonstration
- State persists in localStorage using Zustand persist middleware
- TypeScript Strict Mode: All types are properly defined
- No
anytypes: Full type safety throughout the application - Component-based: Reusable, modular components
- Form Validation: Client-side validation with Zod
- Error Handling: Comprehensive error states and user feedback
- Image Optimization: Next.js Image component for optimized loading
- Font Optimization: Local fonts with proper loading strategies
- Code Splitting: Automatic with Next.js App Router
- SEO Optimized: Metadata and Open Graph tags included
This project is deployed on:
- Vercel (Recommended for Next.js) - One-click deployment
npm run build # Build for production
npm run dev # Start production server