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.
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.
- Faça o download do repositório
git clone https://github.com/AlexandreL0pes/desafio-ninja
- Construa a aplicação
docker compose build
- Crie o banco de dados
docker-compose rails db:create db:migrate db:seed
- Execute a aplicação
docker-compose up
Depois disso a aplicação estará disponível em http://localhost:3000.
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:
-
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
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.
- 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
-
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)