GithubHelp home page GithubHelp logo

product-catalog-test's Introduction

Case Study Tech

  • You don't have a lock in time to finish, but we know how long it takes to be done, so use your good sense.
  • Your answers can be in English or Portuguese, whatever you prefer.
  • All non-human help is allowed. You can use the Internet and any site and tools you want. If you have questions about the tasks please don't hesitate to ask!
  • Visit the case study on GitHub
  • Create a fork for this repository [email protected]:dafiti/product-catalog-test.git and clone it.
  • Solve the tasks as described.
  • After you finished, please create a Pull Request for the master branch at [email protected]:dafiti/product-catalog-test.git

Your tools

  • Editor/IDE
  • Git client

The project

Product Catalog

Description

You and your team have the task to design and build a new product catalog for the Dafiti E-Commerce platform.

Your tasks

  1. Design two alternative Storage solutions and describe advantages and drawbacks of either approach. Think about high number of concurrent requests (moderate write, heavily read). It can be different database strucutures or even completly different database products (only requirement is it needs to be opensource)

How to present your solution: Show us what your database design: might be SQL files, JSON schemas, or a text file explaining your intents.

  1. Write a filter and a validation for the input data of the WMS (service as described below, take care of the specification). You can use a language of your choice, no pseudo-code is allowed, no framework must be used. Note: We should be somehow able to execute the solution (e.g. run script, executable, unit test, etc.).

How to present your solution: WRITE CODE IN WHATEVER LANGUAGE YOU WANT (REMEMBER: WE NEED TO BE ABLE TO RUN THE CODE, SO PLEASE TELL US HOW, E.G. IN A SEPARATE MARKDOWN FILE - OR IF YOUR ARE CUTTING EDGE PROVIDE A DOCKER FILE WHICH WORKS OUT-OF-THE-BOX)

  1. Describe or implement a solution to handle temporary and permanent failure of the involved webservices (language of choice, pseudo-code allowed, external tools or frameworks allowed). As the time might be already tight, at least sketch out some ideas.

How to present your solution: You may write real code, or you could write pseudo-code, though. You could also just write some ideas and concepts on a piece of paper (please don't take this seriously and use a text editor and save as mark down or text format - hand written letters can be hard to read :p ) or create some fancy diagrams for your solution. In the end: we need to be able to understand what's going on.

Technical Details

There are a couple of backend webservices involved. You don't need to care about how the data is requested (e.g. REST, Thrift or something else). For our purpose we will use a simple JSON file as input data to validate your implementation. Use this file for example data. To avoid confusion we added this diagram showing the relations between the services.

WMS webservice (warehouse management system)

  • async possible
  • data can be imported
  • it is likely that new attributes will be added)
  • will always send a batch between 0 and N products which has been changed or added in the WMS since the last call (delta)
Input Parameters: <NONE>
Output:
0..n
    sku -> required, String
    price -> required, Double (Int can be converted to Double)
    name -> required, String
    description-> required, String
    size -> required, Mixed (return value can be an array list or single value)
    brand -> required, String
    categories -> required, Array
    product_image_url -> required, String, valid URL, valid image extension (jpg, jpeg, png, gif), http as protocol can be prepended if domain is valid
    special_price -> optional, Double (Int can be converted to Double)

Stock webservice

  • realtime
  • required
Input Parameters:
    sku -> String
    size -> String
Output:
0..1
    quantity -> Int
    warehouse -> String

CMS webservice

  • async possible
  • cachable
  • acceptable to go without
  • there is a default placeholder text if not available
Input Parameters:
    sku -> String|category -> string
Output:
0..n
    content -> String
    region -> String

product-catalog-test's People

Contributors

cristianmedeiros avatar febeck 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.