Giter VIP home page Giter VIP logo

desafio-ninja's Introduction

Descrição do Problema

Temos um problema grande com reuniões, elas são muitas e temos poucas salas disponíveis. Precisamos de uma agenda para nos mantermos sincronizados e esse será seu desafio! Temos 4 salas e podemos usá-las somente em horário comercial, de segunda a sexta das 09:00 até as 18:00. Sua tarefa será de criar uma API REST que crie, edite, mostre e delete o agendamento dos horários para que os usuários não se percam ao agendar as salas.

Solução

Foi criada uma API Rest para o agendamento de reuniões solucionando o problema relatado. Com a aplicação os usuários poderão agendar suas reuniões em cada uma das salas, visualizando as já criadas, evitando conflitos de agendas.

Instalação

  1. Faça o download do repositório
git clone https://github.com/AlexandreL0pes/desafio-ninja
  1. Construa a aplicação
docker compose build
  1. Crie o banco de dados
docker-compose rails db:create db:migrate db:seed
  1. Execute a aplicação
  docker-compose up

Depois disso a aplicação estará disponível em http://localhost:3000.

Docs

As requisições HTTPs utilizadas para o consumo da API estão dentro do respositório em .github/Insomnia_2021-11-27.json, mas podem ser importadas diretamente pelo botão abaixo:

Run in Insomnia

Comandos úteis

  • Exclusão e criação do banco de dados docker-compose run --rm puma rails db:reset

  • Executar o rubocop docker-compose run --rm puma rubocop

  • Executar os testes docker-compose run --rm puma rspec

  • Acessar o rails console docker-compose run --rm puma rails c

Problemas

Performance conflitos de agenda

A busca por conflitos pode não apresentar uma performance aceitável caso a aplicação aumente consideravelmente o número de agendamentos. Se esse cenário acontecer será necessário melhorar esse ponto específico.

Formato de datas

A formatação de datas fixa realizada pela aplicação não é o ideal. Seria melhor transferir essa responsabilidade para a aplicação que renderizará as informações na tela, levando em consideração a localização do usuário para a escolha do fuso horário e formato comum.

Autenticação de usuários A aplicação desenvolvida ainda não possui nenhuma sistema de autenticação ou permissão. Portanto, qualquer usuário pode alterar, excluir e visualizar reuniões criadas por outros usuários, por isso a implementação de autenticação seria interessante.

Notas

  • O teste deve ser escrito utilizando Ruby e Ruby on Rails
  • Utilize as gems que achar necessário
  • Não faça squash dos seus commits, gostamos de acompanhar a evolução gradual da aplicação via commits.
  • Esperamos testes automatizados.
  • A aplicação deverá subir com docker-compose
  • Crie um README.md descrevendo a sua solução e as issues caso houver
  • O desafio pode ser entregue abrindo um pull request ou fazendo um fork do repositório

Informações adicionais

  • Ruby versão 3.0.0, RoR versão 6.1.4, PostgreSQL versão 12.9

  • Estatísticas sobre a cobertura dos testes (SimpleCov Gem)

Construído por Alexandre Lopes

desafio-ninja's People

Contributors

alexandrel0pes avatar magnumfonseca 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.