GithubHelp home page GithubHelp logo

desafio-olx's Introduction

OLX Distance Challenge

Desafio proposto

Criar uma API Rest que suporte as operações de salvar, mostrar todas e listar palavras semelhantes (até 3 diferenças com valor customizável) com o termo buscado.

Rodar projeto

npm install
npm run migrate
npm start
npm test

Para rodar as migrations precisa antes configurar o arquivo do banco

Para executar os testes o projeto (npm start) precisa também estar rodando

Se estiver com configurações padrão, ele vai rodar em http://localhost:3000. Ou caso prefira, defina as variáveis de ambiente PORT e HOST para quais desejar.

Configurando banco

Utilizei o mysql no projeto pela simplicidade dessa etapa. Gostaria de ter colocado em um ambiente isolado como no Docker mas acabou não dando tempo. O arquivo de configuração fica em: src/configs/database.json

Edite esse script antes de rodar o comando npm run migrate

Obs: As migrations não criam o banco, crie com o nome que estiver no arquivo de configuração.

Rotas

  • GET /api/v1/words - Lista todas as palavras salva no banco
  • GET /api/v1/words/{word} - Lista palavras parecidas com o palavra buscada (threshold 3 como padrão)
  • GET /api/v1/words/{word}/{threshold} - Lista palavras parecidas com o palavra buscada podendo passar threshold
  • POST /api/v1/words/{word} - Salva palavra no banco

Sobre o desafio

Projeto desenvolvido com muito cuidado e amor em javascript/es6, apesar do pouco tempo e disponibilidade. A proposta inicial era fazer com estilo funcional utilizando Ramda onde cabia. O maior desafio seria transpor o algoritmo de busca para funcional com Ramda utilizando as suas características como pure functions, compositions etc. Consegui deixar com estilo funcional porém ainda não foi todo refatorado para Ramda (será meu desafio pós desafio :))

Utilizei o framework Hapi para desenvolver a API, configurar rotas etc. Jasmine para testes junto com frisby que me ajuda a testar a API.

Rodo o eslint todo tempo para deixar o código visualmente agradável e menos propício a erros de transpiladores e minificadores.

O meu task runner é o próprio npm, no package.json listo as tasks necessárias.

desafio-olx's People

Contributors

ayrtonteshima avatar

Stargazers

Luis Domiciano avatar Letícia Franco avatar

Watchers

 avatar

Forkers

luisdomiciano

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.