# <a href="http://www.entinco.com"><img src="https://bitbucket-assetroot.s3.amazonaws.com/c/photos/2023/Jan/03/2313236728-0-eic-steerpro-logo_avatar.png" alt="EIC Logo" width="150"></a><br/> Ecommerce Layered Vertical Slice Facade in Node.Js

<a name="links"></a> Quick links:

* [API Reference](docs)
* [Change Log](CHANGELOG.md)
* [License](License)

## Overview

This repository contains Ecommerce Layered Vertical Slice facade implemented in Node.Js

## Project Structure

The project structure has the following (see below).

Source code:

* `/bin` - a folder with executable binaries
* `/docker` - a folder with dockerized build scripts
* `/obj` - a folder with builded production code
* `/src` - a folder with production code
* `/test` - a folder with functional tests

Node.js configuration:

* `package.json` - Node.js package descriptor

Minimalistic documentation:

* `README.md` - component description
* `CHANGELOG.md` - a list of changes
* `TODO.md` - a list of planned ToDo items
* `LICENSE` - a license for this component

Scripts for dockerized build and test process:

* `component.json` - component descriptor used by automated delivery scripts
* `build.p1` - a script to build (compile) source code
* `check.p1` - a script to lint source code
* `test.ps1` - a script to run functional and non-functional tests
* `package.ps1` - a script to package component into a releasable artifact
* `package_docker.ps1` - a script to create component docker image
* `package_lambda.ps1` - a script to package component into a zip archive
* `clean.ps1` - a script to clear temporary artifacts left by the build and test process
* `run.ps1` - a script to run a container locally

## Develop

For development you shall install the following prerequisites:
* Node.js 14+
* Visual Studio Code or another IDE of your choice
* Docker

Install dependencies:
```bash
npm install
```

Compile the code:
```bash
tsc
```

Run automated tests:
```bash
npm test
```

Before committing changes run dockerized build and test as:
```bash
./build.ps1
./test.ps1
./clean.ps1
```

## Contacts

This repository was created by and is currently maintained by [Dmitriy Krayniy](dkrayniy@entinco.com) and [Alexey Dvoykin](advoykin@entinco.com).
