Welcome to our Mobile Application Developer Challenge. This assessment is designed to evaluate your React Native expertise, architecture skills, and ability to deliver a production ready app. This mini assessment focuses on your ability to build a clean, well-architected React Native CLI (no Expo) app with just three screens:
- Product List
- Cart
- Profile You’ll demonstrate state management, API integration, basic image upload, and clean code—all within a minimal footprint.
- React Native CLI (≥0.70) — no Expo
- TypeScript (strict mode enabled) — mandatory
- **Redux ** (or equivalent) for global state
- Axios or built-in
fetch
for network requests - Image & Picker for upload - Permission Handling — mandatory
- Redux Persist / AsyncStorage (optional, for caching)
- Fetch & display a paginated list of products from a public or mock REST API.
- Show loading spinner and an error state with retry.
- Each item shows image, title, price, and two buttons: “Add to Cart” and “Add to Wishlist.”
- Tapping either toggles that state in Redux.
- List all items added to cart.
- Allow removing items.
- Display the total sum of item prices.
- Show an empty-cart state when no items.
- Edit name and email fields (local state is fine).
- Upload an avatar from camera or gallery, showing upload progress.
- Display the uploaded avatar on this screen.
- Redux handles cart & wishlist.
- Services layer isolates API calls.
- Components are small and reusable.
- Push to a public GitHub repo (include this
README.md
). - Add screenshots of each screen (Android & iOS).
- Optionally, include a 30 sec recording demoing:
- Loading the product list
- Adding/removing items in cart
- Editing profile and uploading avatar
- In your
README.md
, briefly explain:- Why you chose each library/framework
- Your folder structure & architecture decisions
- Any trade-offs or shortcuts due to time