Git Product home page Git Product logo

resolvetest's Introduction

Takehome Readme

This project was bootstrapped with Create React App.

Project Layout

ResolveBackend

This project is the backend core of the app. It is an apollo-server that is returning back graphql queries.

Starting Backend

cd resolveBackend
npm install
npm run compile-gql-types
npm start
open http://localhost:4000/

You can preview the server response via the graphql interface Alt text

Screencaps

screenCapture720-backend.mov
screenCapture720-frontend.mov

Why graphql?

  1. I thought that downloading and parsing the database would result in more overhead than it did. The graphql apollo client for the web-client has mechanisms in place to handle long loads for long duration queries. This turned out to be a non-issue but this demo could support larger downloads and delays between responses due to the "loading" state
  2. I'm code generating all the types from the structure (of which the data is easily structured and rationalized via the graphql queries) -- this allows for auto complete on both the server and the client when it comes to the data model.
  3. The apollo server is letting me just have an async function and handling all the state management of the query for me. The extra overhead of doing it in graphql was worth it for this abstraction.
  4. The apollo client auto caches queries as per one of the line items in the nice to haves ;). Also there's the possibility to add caching to the backend as well if it was to be extended / if we talk about it.

Starting Frontend

(make sure backend is running)

cd resolve-frontend
npm install
npm run compile-gql-types
npm start
(browser should auto launch to the site) localhost:3000
hit the fetch button or enter another entity id to fetch a different entity.

Testing

Only the backend has testing

cd resolveBackend
npm run test

resolvetest's People

Contributors

virtue3 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.