Code Monkey home page Code Monkey logo

star-dealer's Introduction

Software Engineering Front End - Take-Home Challenge


Introduction

Consider a web-service capable of storing, fetching and deleting events emitted by a variety of clients. Your task is to design and implement a frontend for this service using ReactJS. Feel free to use any additional technologies and/or npm packages under the hood if you wish.

A skeleton project has been provided for you using a template similar to that which we use in order to save you time. The idea is that this way you can focus on the functionality and design of your app — not worrying about tooling.

Getting Started

The project is set up for you to build already. Check out the scripts section in the package.json for commands to run that will build and start the project.

For more information about Vitreum (the build system we use) you can find it here.

Event Objects

An event will be JSON with the following format

{
    "type": "[string] The event type",
    "serviceId": "[string] An ID for the service that created this event",
    "icon": "[string] The URL to a small icon for this event",
    "timestamp": "[string] A timestamp indicating when the event occurred",
    "title": "[string] A short summary description of the event",
    "data": "[string] The event payload"
}

The main thing we’re interested in is how you design your frontend. We've already set up a RESTful API that you may use to store and manage your events.

Note: The server stores these event objects non-persistently in memory and they may be erased at any time.

Storing a new event:

POST https://forgetful-elephant.herokuapp.com/events

The server will assign your event an ID and return the object that was saved (including its new ID).

Retrieving a collection of saved events:

GET https://forgetful-elephant.herokuapp.com/events

The server will respond with an array of event objects.

Deleting an event:

DELETE https://forgetful-elephant.herokuapp.com/events/:id

The server will delete the event indicated by the specified ID and return the object that was deleted.

Frontend

Create a React UI that can show a list of these events and a side-panel next to the list. An event entry in the list should display the event's type, title, and icon. When you click one of the events, it should populate the side-panel with all the details of the event. You should also be able to delete events. The overall structure and style in which you display the data are up to you, however, it must fit the listed requirements.

Requirements

  • We care about design with documentation and not merely a working solution.
  • Use a CSS preprocessor. The project comes with LESS setup for you.
  • There should be a separate style file that has "tweakable" style settings, such as colors, dimensions, or font sizes
  • Use flexbox wherever you can to make layouts more intuitive.
  • Build as many components as you feel is needed.
  • Document your project along with any other notes/considerations/etc. using submission.md.

ESLint

We have included an eslint configuration that we typically use for front-end applications. If there are any rules that you found you were missing or wanted to remove/change - let us know!

Extra Considerations

If you finish early and want to experiment with some more features:

  • How could we make this tool handle inconsistent internet connection?
  • If our operators wanted to add filtering how would you do it? What questions would you need to ask them to make sure you get the feature right?
  • If we wanted to fully utilize server-side rendering with API data, how would you do that?
  • What other features do you think would be useful to add to this tool?

Good luck and if you have any questions, please don’t hesitate to contact [email protected].

star-dealer's People

Watchers

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