/rn-graphql-spacex

Recruitment app in React-Native using Apollo and Graph hosted on https://spacex-production.up.railway.app/.

Primary LanguageTypeScript

Recruitment task for Masterhub

Screenshots

MainScreen.tsx DetailsScreen.tsx
Load more launches Filter launches by name
Loading Error handling

Features

  • As a user I want to see the list of 20 oldest launches from launchesPast collection from https://spacex-production.up.railway.app/
  • As a user I want to see the "Loading..." when the list is loading
  • As a user I want to see the "Something went wrong" when there is an error with API connection
  • As a user I want to see details of each Launch:
    • mission name
    • launch date
    • rocket name
  • As a user I want to load 20 more launches on button click
  • As a user I want to be able to find launch (filter the list) by mission name
  • As a user I want to see "No results" message when there are no results of search by mission name
  • As a user I want to see Rocket name displayed in gray font color if Rocket is not active
  • As a user I want to see more info about launch on a separate screen:
    • details
    • links
  • As a user I want to click "Retry" button when fetching the data has failed

Requirements

  • Cover the code with tests.

Additional information

  • Styling is up to you. Simple, elegant design.
  • Feel free to add any package/dependency you want to use (eg. UI Kit) but please keep the solution small, clean and neat.

API endpoints

FAQ

  • What's the deadline

There is no fixed deadline as we prefer you to focus on quality of your solution. You can let us know when you can start working and send regular updates about ongoing progress or any delays.

  • Is TypeScript must have?

If you don't know TypeScript feel free to switch to regular JS.

  • Do I have to write tests?

We write tests on a daily basis and we have high ( > 80% ) test coverage of our codebase. That's why tests are important for us. However if you don't have any experience with tests and don't want to try to write some basic tests you can still send us your solution and it will be evaluated normally.

Available Scripts

In the project directory, you can run:

npm start

Starts the webserver

npm run android

Starts app on Android device/simulator

npm run ios

Starts app on iOS device/simulator

npm test

Runs tests