This is a modern mobile e-commerce product listing application built using React Native, Expo Router, and TypeScript. Features a sleek dark theme with red accents, persistent data storage, and a polished user experience.
- β Product listing from FakeStore API with modern grid layout
- β Dedicated product details screen with portrait orientation lock
- β Persistent wishlist using AsyncStorage with context provider
- β Full cart functionality with quantity controls and persistent storage
- β Dynamic tab badges showing cart and wishlist item counts
- β Advanced search with real-time filtering
- β Swipe navigation between tabs with gesture recognition
- β Dark theme with black background and red (#e50914) accent colors
- β Modern bottom-sheet filter modal (category, rating, price sorting)
- β Gradient hero section with integrated search bar
- β Skeleton loading states for smooth user experience
- β Reusable UI components (AppButton, ProductCard, FilterModal)
- β Vertical content centering on product details screen
- β Custom back button with proper navigation
- β Intuitive swipe gestures with visual feedback and haptic response
- β Tab position indicators and edge swipe boundaries
- β First-time user tutorial for swipe navigation discovery
- β File-based routing with Expo Router
- β Context API for state management (Cart & Wishlist)
- β TypeScript for type safety
- β Screen orientation control
- β AsyncStorage for data persistence
- β Component-based architecture
- React Native - Mobile app framework
- Expo + Expo Router - Development platform and navigation
- TypeScript - Type-safe JavaScript
- AsyncStorage - Local data persistence
- Context API - State management
- expo-linear-gradient - Gradient backgrounds
- expo-screen-orientation - Orientation control
- @react-native-picker/picker - Filter dropdowns
- react-native-gesture-handler - Swipe gesture detection
- react-native-reanimated - Smooth animations
- expo-haptics - Tactile feedback for gestures
- FakeStore API - Product data source
- Node.js (v18 or higher)
- npm or yarn
- Expo CLI (
npm install -g @expo/cli) - iOS Simulator / Android Emulator or physical device
-
Clone the repository
git clone https://github.com/shiv989898/E-Commerce cd E-Commerce -
Install dependencies
npm install
-
Start the development server
npx expo start
-
Run on device/simulator
- Press
ifor iOS Simulator - Press
afor Android Emulator - Scan QR code with Expo Go app on physical device
- Press
- Data Source: FakeStore API
- Endpoints Used:
GET /products- Fetch all products with filtering supportGET /products/{id}- Fetch single product detailsGET /products/categories- Fetch categories for filter options
E-Commerce/
βββ π± app/ # App routing and screens
β βββ _layout.tsx # Root layout with navigation config
β βββ +not-found.tsx # 404 error screen
β βββ (tabs)/ # Tab navigation group
β β βββ _layout.tsx # Tab layout with providers and badges
β β βββ index.tsx # Home screen with product grid
β β βββ Cart.tsx # Shopping cart screen
β β βββ wishlist.tsx # Wishlist screen
β β βββ explore.tsx # Explore/discovery screen
β βββ details/
β βββ [id].tsx # Dynamic product details screen
βββ π¨ components/ # Reusable UI components
β βββ ProductCard.tsx # Product grid item component
β βββ ProductDetails.tsx # Product detail view component
β βββ ui/ # Modern UI components
β β βββ AppButton.tsx # Reusable button with variants
β β βββ FilterModal.tsx # Bottom-sheet filter modal
β βββ Themed*.tsx # Theme-aware components
βββ π― context/ # State management
β βββ CartContext.tsx # Persistent cart state with AsyncStorage
β βββ WishlistContext.tsx # Persistent wishlist state with AsyncStorage
βββ π¨ constants/
β βββ Colors.ts # Dark theme color tokens
βββ π§ hooks/ # Custom React hooks
βββ π¦ assets/ # Static assets (images, fonts)
- Gesture-Based Navigation: Swipe left/right anywhere on screen to navigate between tabs
- Tab Order: Home β Wishlist β Cart β Explore (bidirectional)
- Smart Thresholds: 25% screen width swipe or high velocity triggers navigation
- Visual Feedback: Edge indicators, color tints, and position dots
- Haptic Response: Tactile feedback on successful navigation
- First-Time Tutorial: Animated guide for new users (shown once)
- Smooth Animations: Spring-based transitions with proper damping
- Consistent black (#000000) background across all screens
- Red (#e50914) accent color for interactive elements
- Centralized color system in
constants/Colors.ts
- Wishlist: AsyncStorage with Context API for persistent favorites
- Cart: AsyncStorage with quantity management and persistent shopping cart
- State Sync: Real-time synchronization between storage and UI
- FilterModal: Bottom-sheet style modal with category, rating, and price sorting
- AppButton: Reusable button component with primary/secondary variants
- ProductCard: Optimized grid layout with wishlist toggle and add-to-cart
- Dynamic Badges: Tab navigation with real-time cart and wishlist counts
- File-based routing with Expo Router for clean navigation
- Portrait orientation lock on product details screen
- Vertical content centering for optimal viewing
- Custom back navigation with proper screen transitions
- TypeScript: Full type safety throughout the application
- Context API: Global state management without external libraries
- AsyncStorage: Persistent data storage for cart and wishlist
- Component Architecture: Modular, reusable UI components
- Performance: Optimized rendering with proper state management
- Error Handling: Graceful error states and loading indicators
Shiv Goyal
π§ shivgoyal9988@gmail.com
π GitHub Profile



