Follow these steps
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
src
folder at the root of your project - Inside
src
folder, 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
First Challenge - Your Info
- Create a new branch from
main
and name itfeature/my-info
- Checkout
feature/my-info
branch - Create a file in root directory and name it
my-info.json
- In
my-info.json
file, 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.json
if it's not already in camelCase - Add 3 of your favorite foods at the end of the
my-info.json
object - 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-info
tomain
- Merge the PR and delete
feature/my-info
Second Challenge - Form Submission
- Create a new branch from
main
and name itfeature/form-submission
- In the main screen, create a button with text
Contact Us
which 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-submission
tomain
- Merge the PR and delete
feature/form-submission
Third Challenge - Catalog
- Create a new branch from
main
and name itfeature/catalog
- In the main screen, create a button with text
View Catalog
which 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
View
button, 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/catalog
tomain
- Merge the PR and delete
feature/catalog
Bonus Stage
- Apply clean code principle - MANDATORY FOR SENIORS
- Do unit tests and integration tests - MANDATORY FOR SENIORS
- Add code formatting checks with
prettier
and linter withes-lint
using 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