Code Monkey home page Code Monkey logo

engineer-challenge's Introduction

Feather Take Home Assessment

Thank you for applying at Feather and taking the time to do this home assessment.

The goal of this project is to let you show off your coding and problem-solving skills, on a task that resembles the kind of work you’ll be doing with us.

This coding challenge applies to frontend, backend, and full-stack roles. Depending on the position you are applying for, you can focus on your specific area.

You can spend as little or as much time as you like on this project. We've added some initial boilerplate to help you get started, but feel free to refactor every part of this app as you may seem fit.

  1. Start by reading the Engineering challenge for the position you've applied for and don't forget about the Acceptance criteria to have a clear idea of the requirements.
  2. Use the Getting started guide to set up a local version of the project on your machine.
  3. Take a look at the Data structure and API to know what the data looks like.
  4. Finish by answering a couple of questions about the project. You can answer them on this very same file.

Engineering challenge

We've prepared several different user stories to work on. Depending on what position you applied to, pick one of them:

Task requirements

  • Make sure your feature works as expected
  • Your code is easy to understand and follows best practices
  • The project runs with one command, and without any external configuration
  • Your code has tests to make sure the functionalities work as expected

Getting started

  1. Make sure you have Docker installed on your machine

  2. Set up the environment variables

    make prepare-backend
  3. Build and run the Docker images:

    • Backend:
      make start-backend
    • Frontend
      make start-frontend
  4. That’s it!

You can see the app on http://localhost:3000

The API should be running on http://localhost:4000

To stop all docker containers, run

make stop-all

** Note ** You might want to take a look at Makefile to see a bunch of other helpful commands. For example, to run the app without docker container you can simply run make run-backend or make run-frontend.

** Note ** If you want to install new dependencies, you'll have to do it inside the docker container. To do that, you can use the following command:

docker compose exec {backend OR frontend} yarn add {the_name_of_the_package}

Make sure to replace the values between the curly braces {} with the correct ones.

API

After following the Getting started guide, the backend should be running on port 4000. The backend currently have one endpoint:

Request type Path Query Params Example
GET /policies search /policies?search=BARMER

Feel free to update or add more endpoints to accommodate or improve your solution.

Data structure

Policy

fields type comment
id string Used to identify the policy
customer Customer Object holding the customer's informations
provider string Name of the provider (Allianz, AXA…)
insuranceType InsuranceType Type of the insurance (Liability, Household…)
status PolicyStatus Status of the insurance (Active, Cancelled)
startDate date Date when the policy should start
endDate date Date when the policy ends
createdAt date Date when the record was created

Customer

fields type comment
id uuid Used to identify the customer
firstName string Customer’s first name
lastName string Customer’s last name
dateOfBirth date Customer’s date of birth

InsuranceType

InsuranceType can be of LIABILITY, HOUSEHOLD, HEALTH

PolicyStatus

PolicyStatus can be of ACTIVE, PENDING, CANCELLED and DROPPED_OUT

General questions

  • How much time did you spend working on the solution?

    • A few hours overall
  • What’s the part of the solution you are most proud of?

    • Refactoring of the project structure
    • Continuous integration and build overall

    You can share a code snippet here if you feel like it

  • If you had more time, what other things you would like to do?

    • Find out how to make openapi definition connected with prisma models
    • Add more tests
    • Add ability to query for non-exact matches in family members. The problem here is non-exact matching in JSON arrays of objects is only implemented for MySQL and doesn't work in Postgres connector
  • Do you have any feedback regarding this coding challenge?

    • It was quite cool to develop, to be honest, otherwise I wouldn't spend that much time :) Is the initial setup working?, is something missing?, or any other comment

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.