Just open terminal or cmd in root and do yarn install and run yarn run android.
Build an iOS and Android application using React Native + TypeScript that demonstrates your skills in design, data and state management, component architecture, and TypeScript.
Create a simple mobile app that displays a list of items retrieved from a public API of your choosing. The app should include the following features:
- Display a list of items with at least three pieces of information (e.g., title, description, and an image) per item.
- Implement a search bar to filter the items based on their attributes (e.g., searching by title).
- Allow the user to click on an item to view more details.
- Implement pagination to load more items as the user scrolls.
- Allow the user to create a new item that gets added to the list. If the API does not support adding new items, you can choose to do it locally. The form used to create the item should include more than 2 unique types of fields and each field as well as the entire form should contain proper validation.
- Use React Native with TypeScript.
- Use React Navigation for navigation between screens.
- Use React Query for data fetching.
- Use React Hook Form for any forms.
- Use appropriate TypeScript typings for your components and data structures.
- Design and layout should be responsive and visually appealing.
- The app should contain error handling and display meaningful error messages to the user.
- The code should be well-structured, well-documented, and maintainable, as if written for production.
- You can use any UI component library of your choosing (e.g. React Native Paper, NativeBase/gluestack etc)
You can earn extra points by adding the following:
- Unit tests (e.g., using Jest and React Testing Library).
- State management (e.g. using Context API, Redux, or Zustand) for managing app-wide data (e.g. user authentication, or theme).
- Any additional features you think will enhance the user experience.
Please review the following criteria for grading:
- The app is visually appealing, user-friendly, and responsive.
- Navigation is intuitive, and the user interface is well-designed.
- React Query is correctly implemented for data fetching and caching.
- Local state management is effective and follows best practices.
- Error handling and data synchronization are implemented.
- Errors are gracefully handled, and error messages are displayed to the user when necessary.
- TypeScript is effectively used throughout the project, including type checking for components, props, and data structures.
- Types are appropriately defined and used to improve code quality.
- Code is well-structured, organized, and follows best practices.
- Components are reusable and modular.
- Proper separation of concerns and clean code principles are followed.
- The app includes all required features: list display, search, item details, pagination, and creating new item.
- Bonus features, if implemented, work correctly.
- Unit tests are written and cover critical components and functionality.
- State management library is set up effectively and well architected
- Any additional features are well-implemented and enhance the user experience.
Please fork this repository and submit your code as a pull request. Include instructions on how to run the app and any additional information about your project with a clear README (as it would be written for production). The grading will be based on the code submitted in the pull request.
Good luck with the challenge!