Cross-Platform E-Commerce
this is a high-performance, scalable mobile shopping application built with React Native and the Expo ecosystem. This project serves as a portfolio artifact, demonstrating sophisticated mobile frontend patterns, centralized state management, and resilient architectural decision-making.
Developing for mobile requires a focus on performance, persistence, and deterministic state. This project prioritizes:
- Type Safety: Full TypeScript implementation to ensure data integrity across API responses and global state.
- State Persistence: Integration of AsyncStorage to maintain user sessions and cart data across app lifecycles.
- Modern Routing: Utilizing Expo Router for deep-linkable, file-based routing across Android and iOS.
- Resilient UI: Strategic handling of asynchronous data to prevent UI flickering and "null" crashes during API latency.
The application utilizes a nested navigation architecture to balance ease of use with security:
- (tabs) Layout: The primary application context housing the Product Catalog, Shopping Cart, and User Wishlist.
- Dynamic Stack Routing: Implements
app/product/[id].tsxto handle high-volume product rendering through a single, optimized template. - Auth Flow: Dedicated routes for
login.tsxandregister.tsxto manage secure user access and onboarding.
Global state is managed via a centralized Redux store, ensuring a Single Source of Truth:
- Cart Logic: Specialized
cartSlice.tsmanaging item addition, quantity updates, and state persistence. - Wishlist Management:
wishlistSlice.tshandling favorites toggling and dynamic UI badge updates. - Memoized Selectors: Optimized logic to calculate totals and counts, preventing unnecessary re-renders in complex UI trees.
Integrated React Hook Form with Yup to decouple validation rules from UI components:
-
Strict Security Policy: Enforces high-entropy passwords via Regular Expressions (Regex):
-
Minimum 8 characters.
-
Mandatory Uppercase, Lowercase, Number, and Special Character (
@$!%*?&). -
Data Integrity: Implements cross-field validation for "Confirm Password" fields using
yup.ref().
app/
├── (tabs)/ # Core Tab-based navigation
│ ├── _layout.tsx # Tab bar configuration
│ ├── cart.tsx # Cart engine & logic
│ ├── favorites.tsx # Wishlist management
│ ├── index.tsx # Product Catalog (Home)
│ └── profile.tsx # User settings & profile
├── product/ # Nested Dynamic Stack
│ └── [id].tsx # Dynamic product detail renderer
├── login.tsx # Authentication entry
└── register.tsx # Secure signup form
store/ # Centralized Redux Store
├── cartSlice.ts # Cart reducers
├── store.ts # Root store configuration
└── wishlistSlice.ts # Wishlist logic
components/ # Reusable UI components
constants/ # Theme colors and static data
hooks/ # Custom React hooks
- Install dependencies
npm install
- Start the app
npx expo start
In the output, you'll find options to open the app in a development build, Android emulator, iOS simulator, or Expo Go. Scan the QR code with your physical device to see the app in action.
SmartStore represents a shift from "basic app development" to Mobile Systems Engineering. It showcases:
- Scalable State Persistence: Managing complex data transitions across app restarts.
- Production-Ready Validation: Protecting user data through rigorous schema enforcement.
- Optimized UX: Supporting Native functionality and providing instant tactile feedback.
Author: Nodo
Purpose: Portfolio Project
Status: Final Release — 2026