Core

Build Status codecov Heroku Heroku

Este es el servicio principal de Back-End de bookBnB. Contiene la l贸gica principal de negocio para la mayor parte de las funciones.

Ambientes

Se encuentra desplegado en un ambiente productivo y otro interno del equipo de desarrollo para testing:

Instalaci贸n

Dado que la aplicaci贸n se encuentra dockerizada la instalaci贸n es tan sencilla como:

$ git clone git@github.com:BookBnB/core.git
$ cd core
$ docker-compose up -d

Luego para conectarse a la app:

$ docker-compose exec app bash

Imagen

Para crear una imagen de docker con el estado actual de la aplicaci贸n se debe ejecutar:

$ docker/build_production_image.sh

Esto crear谩 una imagen con el tag bookbnb:latest.

Despligue

Luego para desplegar la imagen en Heroku:

$ docker/heroku_push.sh

Es necesario que para ello se encuentre configurada la variable de ambiente $TRAVIS_BRANCH indicando la rama que se desea desplegar.

Build

Para compilar la aplicaci贸n:

$ npm run build # one time
$ npm run build:watch # fast recompile on file changes

Tests

Para ejecutar los tests:

$ npm run test # all tests, no coverage
$ npm run test:unit # unit tests only
$ npm run test:acceptance # acceptance tests only
$ npm run test:coverage # all tests, with coverage

Configuraci贸n

Se deben configurar las siguientes variables de ambiente:

variabledescripci贸n
ALGOLIA_ADMIN_API_KEYApi key de Algolia
ALGOLIA_APPLICATION_IDId de aplicaci贸n en Algolia
BACKOFFICE_URLUrl del front-end del backoffice
USERS_SERVICE_URLUrl del servicio de usuarios
DATABASE_URLUrl de conexi贸n a la base de datos
NODE_ENVAmbiente en el que se encuentra
SECRET_KEYClave random para generar tokens

Cobertura

El proyecto fue testeado con pruebas unitarias y de integraci贸n utilizando Gherkin logrando una cobertura mayor al 90%. Se puede ver el detalle de los reportes en codecov.

Arquitectura

Arquitectura

Este microservicio utiliza una arquitectura hexagonal para mantener desacoplada la l贸gica de negocio con el resto de las conexiones del servicio.

OpenApi

Puede consultarse la especificaci贸n OpenApi en api.json o utilizando swagger en api-docs.