Code Monkey home page Code Monkey logo

goomer-job-dev-backend's Introduction

alt text

Challenge - Developer Backend

Você provavelmente já está participando do nosso processo seletivo, mas se você caiu aqui por acaso, leia esse documento até o final e se você se interessar, pode começar o processo à partir daqui =]

Não é esperado que todas as pessoas consigam realizar esse desafio por completo, já que é destinado a todos os níveis de carreira.

A avaliação será baseada na sua capacidade de escrever um código simples, de fácil manutenção, e pela quantidade de funcionalidades que você entregar.

Instruções

  • Nome do Projeto: Goomer Lista Rango
  • Objetivo do Projeto: Criar uma API RESTful capaz de gerenciar os restaurantes e os produtos do seu cardápio.
  • Tecnologia: Node.js com banco de dados relacional.
  • Entregáveis: Crie um repositório pessoal para esse projeto, siga as instruções abaixo e responda e-mail recebido com link do repositório. Caso você resolveu fazer o teste por conta própria pode enviar para [email protected].

Desafio

  • A sua API deverá ser capaz de:

    • Listar todos os restaurantes
    • Cadastrar novos restaurantes
    • Listar os dados de um restaurante
    • Alterar os dados um restaurante
    • Excluir um restaurante
    • Listar todos os produtos de um restaurante
    • Criar um produto de um restaurante
    • Alterar um produto de um restaurante
    • Excluir um produto de um restaurante
  • O cadastro do restaurante precisa ter os seguintes campos:

    • Foto do restaurante
    • Nome do restaurante
    • Endereço do restaurante
    • Horários de funcionamento do restaurante (ex.: De Segunda à Sexta das 09h as 18h e de Sabado à Domingo das 11h as 20h).
  • O cadastro de produtos do restaurante precisa ter os seguintes campos:

    • Foto do produto
    • Nome do produto
    • Preço do produto
    • Categoria do produto (ex.: Doce, Salgados, Sucos...)
    • Quando o Produto for colocado em promoção, precisa ter os seguintes campos:
      • Descrição para a promoção do produto (ex.: Chopp pela metade do preço)
      • Preço promocional
      • Dias da semana e o horário em que o produto deve estar em promoção
Formato de horários
  • É necessário tratar os campos que indicam horários de funcionamento e horário para as promoções dos produtos.
  • Os campos devem possuir o formato HH:mm.
  • Os horários devem possuir intervalo mínimo de 15 minutos.

O que nós vamos avaliar

  • Vamos avaliar a qualidade do código, legibilidade e a quantidade de funcionalidades implementadas.
  • Você é livre para tomar as decisões técnicas com as quais você se sente mais confortável. Apenas esteja pronto(a) para explicar as razões que fundamentaram suas escolhas =]
  • Inclua um arquivo README que possua:
    • desafios/problemas com os quais você se deparou durante a execução do projeto.
    • maneiras através das quais você pode melhorar a aplicação, seja em performance, estrutura ou padrões.
    • todas as intruções necessárias para que qualquer pessoa consiga rodar sua aplicação sem maiores problemas.

Dicas

  • Documente seu projeto em arquivos markdown explicando a estrutura, processo de setup e requisitos.
  • Tenha sempre um mindset de usabilidade, escalabilidade e colaboração.
  • A organização das branches e os commits no repositório falam muito sobre como você organiza seu trabalho.
  • Os testes unitários são mais do que desejados.
  • O design/estrutura do código da aplicação deve ser production ready.
  • Tenha em mente os conceitos de SOLID, KISS, YAGNI e DRY.
  • Use boas práticas de programação.
  • Considere que não sabemos nada sobre os seus conhecimentos, então quanto mais você mostrar e o quão mais descritiva for sua documentação, melhor =]

FAQ

Posso utilizar frameworks/bibliotecas?

Você pode usar bibliotecas como Express, mas queremos que a solução de arquitetura seja sua, portanto não use frameworks que impõem uma arquitetura específica.

Quanto tempo eu tenho ?

Quanto mais tempo você demorar, mais críticos seremos na sua avaliação =]

Qual banco de Dados devo usar?

Escolha entre MySQL e PostgreSQL.

Posso usar um ORM?

O uso de ORM é permitido apenas para estabelecer a conexão com o banco de dados. No entanto, para podermos avaliar os seus conhecimentos em SQL pedimos que não use ORM nas consultas ao banco. As bibliotecas normalmente possuem métodos que permitem consultas diretamente em SQL (raw queries) mesmo através do ORM.

Happy coding

alt text

goomer-job-dev-backend's People

Contributors

jdgabriel avatar wassano avatar pablos4nt0s avatar ribeirogab avatar dwassano avatar n8eloy 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.