Application Setup (DO THIS FIRST)
- Fork this repository into your GitHub account (You can create a GitHub account if you don't have one)
- Clone the repository from your repository
- Checkout main branch
- Install dependencies
- To start development use npm start
- You may follow this way of structuring your code:
- Create
srcfolder at the root of your project - Inside
srcfolder, create 5 other folders:- screens
- components
- redux
- services
- utils
- You may interpret the meaning of each folder however you like, you will need to justify it later in the interview
- Create
- Should you don't want to proceed with the recommended structure, you can use your own structure and justify it later in the interview as to why
- Create a new branch from
mainand name itfeature/my-info - Checkout
feature/my-infobranch - Create a file in root directory and name it
my-info.json - In
my-info.jsonfile, insert:- 3 of your Favorite colors in an
array - Name of the country that you want to visit as a
string - Population of that country as a
number - Will you visit that country within 5 years for now as a
boolean
- 3 of your Favorite colors in an
- Commit your changes with message
Add my-info.json - Change the property field names to follow camelCase format in
my-info.jsonif it's not already in camelCase - Add 3 of your favorite foods at the end of the
my-info.jsonobject - Commit your changes with message
Add my favorite foods - Change the property field names to follow snake_case format in
my-info.json - Commit your changes with message
Change property field names to 'snake_case' format - Push your changes to remote
- Create a pull request from
feature/my-infotomain - Merge the PR and delete
feature/my-info
- Create a new branch from
mainand name itfeature/form-submission - In the main screen, create a button with text
Contact Uswhich when clicked will redirect the user to another screen which has- A text field to input user's name
- Must not be null
- Must contain letters only
- Maximum of 50 chars
- A text field to input user's email
- Must be a valid email address
- A calendar field to input user's birthday
- Must not able to select future date
- A Button that says
Submit
- A text field to input user's name
- When submit button clicked, it will show a pop up with the user's input in it
- Commit your changes with message
Finish form validation - Push your changes to remote
- Create a pull request from
feature/form-submissiontomain - Merge the PR and delete
feature/form-submission
- Create a new branch from
mainand name itfeature/catalog - In the main screen, create a button with text
View Catalogwhich when clicked will redirect the user to another screen which has- A list of pokemon (From https://pokeapi.co/)
- Make it paginated with 10 pokemons per page
- Display each pokemon in a card, with a button at the bottom of each card that says
View
- When user clicks
Viewbutton, it will go to another screen and the user can see the details of the pokemon. - In the pokemon details screen, there must be a back button to go back to list of pokemon screen
- A list of pokemon (From https://pokeapi.co/)
- Commit your changes with message
Finish catalog - Push your changes to remote
- Create a pull request from
feature/catalogtomain - Merge the PR and delete
feature/catalog
- Apply clean code principle - MANDATORY FOR SENIORS
- Do unit tests and integration tests - MANDATORY FOR SENIORS
- Add code formatting checks with
prettierand linter withes-lintusing the recommended settings for React Native (you can google this) - MANDATORY FOR SENIORS - Implement a state management using Redux so that we don't need to call the api again when we want to see the list of pokemons - MANDATORY FOR SENIORS