To run the applications locally you need to setup environment with the following technologies:
- Node.js - v16.10.0 or higher
- Yarn - v1
- Expo CLI - compatible with Expo SDK v48
- Expo Go - compatible with Expo SDK v48
- Clone the application to your local machine.
- Go to the repository root directory.
- Install the dependencies and devDependencies by running the command in the terminal:
$ yarn install
- Setup environment variables:
MOCK_API_BASE_URL
is not implemented and call to this endpoint will throw an error (settled state is handled).REBRICKABLE_API_KEY
can be generated in user settings link available on this page.
Important! Registration in rebrickable.com
is required.
- Run the command in the terminal to start the server:
$ yarn start
- Select the platform:
› Press a │ open Android
› Press i │ open iOS simulator
› Press w │ open web
- React
- React Native
- Expo
- React Query
- Expo Router
- NativeBase
- XState
- axios
- Husky
- Prettier
- ESLint
- Commitlint
- TypeScript
- iPhone 14 Pro Max - iOS 16.2 (Xcode Simulator)
- iPhone 12 mini - iOS 16.4 beta (real device)
- Nexus 5X API 33 (Android Studio Emulator)
Possible Improvements (not applicable/required for recruitment task but for long term app development in real project)
- extract texts to separate file to easier migrate to i18n.
- create
/src
dir. Probably not possible with current version ofexpo-router
. - setup
baseUrl
in tsconfig to use absolute imports for nested directories. - fix husky actions - re-add typecheck, apply scripts only to project dirs (exclude node_modules).
- improve keyboard behavior
- extend theme setup
- add better handler for mock API call
- improve type safety
- improve performance
- add custom error messages to form validation
- fix navigation bar (Android) when modal is open
- add fields config dedicated to input requirements e.g. specific keyboard type
- add unit and E2E tests based on proposals.
- yup validation for the personal details form
- XState machine flow
DataPageTemplate
based on status change
- full flow: select minifig, provide personal details, submit