Git Product home page Git Product logo

spacextask's Introduction

Tech Test

Your task is to create a React application that will consume data from the SpaceX public API. The application must retrieve historic and future SpaceX launches and present them in a list view. Provided in this pack are a copy of the designs as well as all of the assets you will need. Use the create-react-app CLI tool to generate a new react project and feel free to use any 3rd party packages that will assist in your development.

Designs are available from: https://sketch.cloud/s/yyv1b/agmoaZP

The API documentation is available from: Postman - https://docs.spacexdata.com GitHub - https://github.com/r-spacex/SpaceX-API

User Stories

  • As a user, I want the ability to load the full list of SpaceX launches from the SpaceX API
  • As a user, I want the ability to reload the data to see any new changes
  • As a user, I want the ability to filter the launch list by year
  • As a user, I want the ability to sort all launches by date (ascending/descending)

Considerations we will be looking for in your submission are:

  • Project approach
  • Accuracy of designs
  • State management
  • Code quality (e.g patterns and organisation of the application code)
  • Network logic

Bonus Considerations:

  • Accessibility (A11y) best practices.
  • Type Safety i.e propTypes or TypeScript
  • Unit Tests

How to run

  • npm install
  • npm start
  • npm test (for albeit limited tested)

Final Thoughts

I'm not happy with the final project structure. My plan was to make the SplashImage and Button component to be completely reusable, however as they stand, they still have project specific logic in them. I do feel I rushed this but I've realised how difficult is to come up with a project structure and for me the most important question is could another dev come into this codebase and grasp what's going on? I think so. Do I think this is production ready? Absolutely not :) With more time, I would have properly researched Accessibility best practices, I made an attempt to follow a A11y checklist but I feel this was more lip service than treating it with due diligence. I would have also liked to finish tests off. Also, I would have liked to add in an animation to the reload button, currently it looks like it does nothing. React Query is triggering a fresh network query (as seen in the network tab of devtools), but you do not see any rerendering unless the new data fetched differs from the old data.

spacextask's People

Contributors

gieitlaldywithamy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.