Develop a feature-rich React Native application that allows users to browse and interact with a dynamic product list fetched from a dummy API. The application should include advanced features such as sorting, filtering, searching, favoriting, and detailed product information.
- Fetch product data from the provided dummy API [https://dummyjson.com/products].
- Display a list of products, each containing:
- Image
- Title
- Description
- Price
- Favorite icon (with dynamic color based on user's choice)
- Implement a section above the product list with:
- Sorting options for price and rating.
- Filters for product brand.
- Search bar for title and description.
- Allow users to mark products as favorites.
- Implement a separate icon for navigating to the list of favorited products.
- On the product detail page, users can toggle the favorite status.
- Update the favorited products icon color on the previous screen upon returning.
- Create a detailed product view with:
- Image
- Title
- Description
- Price
- Price after discountPercentage
- Stock
- Rating
- Small images carousel
- Ability to add/remove the product from favorites
- Implement navigation between product list, favorited products, and product detail pages.
- Allow users to navigate to the next and previous products from the detail page.
- Implement a splash screen for a visually appealing start.
- Use functional components and leverage React hooks.
- Explore and propose ideas for offline storage of user's favorite products.
- Implement a mechanism for offline storage of user's favorite products, ensuring a seamless experience even without an internet connection.
- Share the source code repository (GitHub, Bitbucket, etc.).
- Include clear instructions on how to run the application locally.
- Provide a brief documentation outlining the architecture and key decisions.
- Code quality, structure, and organization.
- User interface design and responsiveness.
- Implementation of advanced features (sorting, filtering, favoriting).
- Proper navigation and seamless transitions.
- Handling of asynchronous operations and API calls.
- Creative solutions for offline storage (if attempted).
This enhanced challenge aims to test not only your React Native skills but also your ability to design and implement a feature-rich mobile application with a focus on user experience and responsiveness. Good luck!