A comprehensive React Native mobile application for the Niche Marketplace Builder platform. This app allows customers to shop, vendors to manage their stores, and admins to manage the platform.
nichexismarket/
├── src/
│ ├── types/
│ │ └── index.ts # TypeScript type definitions
│ ├── services/
│ │ └── api.ts # API client with axios
│ ├── store/
│ │ ├── slices/
│ │ │ ├── authSlice.ts # Authentication state
│ │ │ ├── productSlice.ts # Products state
│ │ │ └── cartSlice.ts # Shopping cart state
│ │ └── index.ts # Redux store configuration
│ ├── screens/
│ │ ├── auth/
│ │ │ ├── LoginScreen.tsx
│ │ │ └── SignupScreen.tsx
│ │ ├── customer/
│ │ │ ├── HomeScreen.tsx
│ │ │ └── ProfileScreen.tsx
│ │ ├── vendor/
│ │ │ └── DashboardScreen.tsx
│ │ └── admin/
│ │ └── DashboardScreen.tsx
│ ├── components/
│ │ └── common/
│ │ └── Button.tsx # Reusable UI components
│ ├── navigation/
│ │ └── RootNavigator.tsx # Navigation configuration
│ └── utils/
│ └── helpers.ts # Utility functions
├── App.tsx # Main app component
└── package.json
react-native@0.83.0- React Native frameworkreact@19.2.0- React library
@react-navigation/native- Navigation library@react-navigation/stack- Stack navigation@react-navigation/bottom-tabs- Tab navigationreact-native-screens- Native screen managementreact-native-safe-area-context- Safe area handling
@reduxjs/toolkit- Redux state managementreact-redux- React bindings for Reduxaxios- HTTP client
@react-native-async-storage/async-storage- Local storage
formik- Form state managementyup- Form validationreact-native-vector-icons- Icon libraryreact-native-toast-message- Toast notifications
npm installEdit src/services/api.ts and update API_BASE_URL:
const API_BASE_URL = 'https://your-api-endpoint.com/v1';Android:
npm run androidiOS:
npm run ios- ✅ User login with email/password
- ✅ User signup with role selection (Customer/Vendor/Admin)
- ✅ Session persistence using AsyncStorage
- ✅ Automatic token refresh handling
- ✅ Role-based navigation
- ✅ Home screen with product browsing
- ✅ Product listing with pagination
- ✅ User profile screen
- ✅ Tab-based navigation (Home, Cart, Profile)
- ✅ Logout functionality
- ✅ Dashboard with sales statistics
- ✅ Quick action menu for store management
- ✅ Tab-based navigation for vendors
- ✅ Store metrics display
- ✅ Platform overview with key metrics
- ✅ Admin management tools
- ✅ Vendor and user management access
- ✅ Tab-based admin navigation
- ✅ Redux store with authentication slice
- ✅ Product management slice
- ✅ Cart management slice
- ✅ Async thunks for API calls
- Product detail page with images and variations
- Shopping cart management
- Checkout flow with payment integration
- Order history and tracking
- Wishlist functionality
- Product reviews and ratings
- Address management
- Search and filtering
- Store browsing
- Store setup wizard
- Product management (CRUD)
- Bulk product upload via CSV
- Inventory management
- Order management and fulfillment
- Sales analytics and reports
- Subscription management
- Store customization
- Customer communication
- Vendor approval workflow
- Vendor suspension/management
- Platform analytics
- Subscription management
- Category management
- Theme management
- Payment settlement
- Support ticket management
- Stripe integration
- PayPal integration
- Paystack integration
- Flutterwave integration
- Apple Pay
- Google Pay
- AI-powered product descriptions
- SEO optimization tools
- Notifications (email, SMS, push)
- Real-time order updates
- Advanced analytics
- Fraud detection
- Multi-language support
- User opens app
- App checks AsyncStorage for existing token
- If token exists, user is logged in and navigated to appropriate dashboard
- If no token, user sees Auth screens (Login/Signup)
- On login/signup, token is stored and user is navigated based on role
The API client in src/services/api.ts provides methods for:
login(email, password)signup(data)logout()
getProducts(storeId, page, limit, filters)getProductById(productId)createProduct(data)updateProduct(productId, data)deleteProduct(productId)
getOrders(page, limit)getOrderById(orderId)createOrder(data)updateOrderStatus(orderId, status)
getCart()addToCart(productId, quantity)updateCartItem(productId, quantity)removeFromCart(productId)
getStore(storeId)createStore(data)updateStore(storeId, data)
getProductReviews(productId, page)createReview(productId, data)
getVendorAnalytics(storeId, period)getAdminDashboard()
All types are defined in src/types/index.ts:
User- User account informationProduct- Product detailsOrder- Order informationCart- Shopping cartVendorStore- Vendor store detailsReview- Product reviewSubscription- Vendor subscriptionNotification- In-app notification
PrimaryButton- Main call-to-action buttonSecondaryButton- Secondary action buttonTextInput- Custom input fieldErrorMessage- Error display component
npm run testnpm run lintAndroid:
cd android && ./gradlew assembleReleaseiOS:
cd ios && xcodebuild -workspace nichexismarket.xcworkspace -scheme nichexismarket -configuration ReleaseFollow React Native official documentation for:
- Setup Backend API - Create/configure your backend server
- Implement Missing Screens - Add remaining screens for each user role
- Add Payment Integration - Integrate payment gateways
- Setup Notifications - Configure push/email/SMS
- Deploy - Build and submit to app stores
- Create feature branches from main
- Follow the existing code structure
- Write tests for new features
- Submit pull requests with descriptions
For issues or questions, please refer to:
- React Native docs: https://reactnative.dev
- Redux docs: https://redux.js.org
- React Navigation: https://reactnavigation.org
This project is part of the Niche Marketplace Builder platform.
Happy Coding! 🎉