GithubHelp home page GithubHelp logo

motorway-tech-test's Introduction

Preface

This is my first time using Nest.js, I came across it a few months ago but never got the chance to try it out, and so I thought this might be the perfect opportunity - or not!

Assumptions & Guiding Principles

  • We will be able to dictate to the API consumers how we expect dates e.g. pass dates as encoded strings
  • Skinny controllers, skinny repositories, fat services
  • If you have limited time, prefer e2e tests over integration/unit specifically for APIs

Repo

I've reorganised things to make it neater following a clear mono-repo strategy.

Setup

I've setup a network so all containers can communicate with each other but we only surface up nginx:80 for public use:

  • nginx
    • Web server, port 80,
    • Reverse proxy setup with upstream possibility to setup multiple instances
  • api
    • Nest.js API, no external ports,
  • db
    • DB, no external ports
  • redis
    • Redis, no external ports

API

  • GET http://localhost/vehicle-states/3?timestamp=2022-09-12%2010%3A00%3A00%2B00

Response:

{
  "vehicleId": 3,
  "state": "selling",
  "timestamp": "2022-09-11 23:21:38+00"
}

App

  • ./api
    • Setup the .env file from the .env.example - if it hasn't been done so already
  • ./db
    • Setup the .env file from the .env.example - if it hasn't been done so already

Run:

docker-compose up -d --build

Tests

For brevity, my focus was on the e2e tests, though, I did go back and add unit/integration tests, you'll need to set api target to dev, rebuild, and then run:

Run:

npm run test # unit + integration
npm run test:e2e # e2e

motorway-tech-test's People

Contributors

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