Giter Club home page Giter Club logo

events-problem's Introduction

Events problem

Este projeto tem como finalidade resolver problemas relacionados ao registro e consumo de eventos de navegação dos usuários em um site.

API

API Coletora

O objetivo desta API é registrar as informações de eventos de navegação dos usuários de um site.

Uso da API Coletora

POST /events HTTP/1.1
Content-Type: application/json
{
  "evemt": "buy",
  "timestamp": "2016-09-22T13:57:31.2311892-04:00"
}

Retorno da API Coletora

  • 201 Created
{
  "evemt": "buy",
  "timestamp": "2016-09-22T13:57:31.2311892-04:00",
  "_id": "5c8581f76486797cecdd030e"
}
  • 400 Bad Request

API de autocomplete

Esta API tem como objetivo fornecer um mecanismo para a construção de um autocomplete baseado nas informações dos nomes dos eventos registrados no banco de dados.

Uso da API de autocomplete

GET /event-names?text=:text HTTP/1.1
Content-Type: application/json

Retorno de autocomplete

  • 200
[
  {
    "name": "comprou"
  },
  {
    "name": "comprou-produto"
  }
]

API timeline

Esta API tem como objetivo fornecer um mecanismo de compilação dos eventos em uma linha do tempo ordenada, agrupando as compras e os itens comprados

Uso da API timeline

GET /timeline HTTP/1.1
Content-Type: application/json

Retorno timeline

  • 200
{
  "timeline": [
    {
      "timestamp": "2016-10-02T11:37:31.2300892-03:00",
      "revenue": 120.0,
      "transaction_id": "3409340",
      "store_name": "BH Shopping",
      "products": [
        {
          "name": "Tenis Preto",
          "price": 120
        }
      ]
    }
  ]
}
  • 500

Configurações

  • PORT: Porta na qual o servidor web ficará disponível (default: 8339);
  • LOG_HEALTH_STATUS: Informa se deve ou não registrar logs de requisições ao health-status (default: false);
  • LOG_ALL_REQUESTS: Informa se deve logar todas as requisições ou somente erros (default: false - "somente errors");
  • LOG_LEVEL: Informa o level de registro de logs [ emerg, alert, crit, error, warning, notice, info, debug ] (default: info);
  • DATABASE_NAME: Nome do banco de dados;
  • DATABASE_URI: URI para conexão com o mongodb;
  • EXTERNAL_API_BASE_URL: Url base para a api externa de eventos;
  • EXTERNAL_API_EVENTS_PATH: Caminho para o recurso de eventos da API.

Stack

Para a criação deste projeto utilizamos as seguintes tecnologias e frameworks:

  • Node.js - Plataforma de desenvolvimento
  • Express - Web framework minimalista desenvolvido em node.js
  • Mongodb - Banco de dados No SQL
  • Docker CE - Plataforma de deploy

Instalação e execução da aplicação

Testes

Para executar a stack de testes basta executar o seguinte comando:

npm i
npm test

Para executar somente os testes automatizados deve ser executado:

npm i
npx mocha

Executando local

Para executar o projeto localmente basta ajustar as configurações no arquivo /config.config.js e executar o seguinte comando:

npm i
npm start

Executando local com Docker

docker-compose up -d

Executando testes de stress local

npm i
npm start &
npm run stress

Executando testes de stress local com Docker

docker-compose up -d
npm run stress

events-problem's People

Contributors

hugoiuri avatar

Watchers

James Cloos 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.