/esl_task_board

Technical challenge

Primary LanguageRuby

Desafio técnico

Desenvolver um sistema em Ruby on Rails com um board para cadastro e controle de histórias, inspirado no mecanismo de colunas e cards do “Trello”.

  • A aplicação deve ser acessível apenas para usuários logados, possuir testes unitários e testes de integração.
  • A interface deve utilizar um template do Bootstrap, e deve contar com recursos que agreguem valor à usabilidade onde relevante: drag and drop, modais, máscaras de data, etc., a critério do candidato.
  • A sequência dos commits deve demonstrar a evolução do projeto; entregar o projeto todo pronto com apenas um commit no final perde muitos pontos.

Entregas

  • link do sistema publicado no Heroku, para navegarmos na versão final. - link do código no Github.

Regras para o model History

  • points: deve aceitar apenas 1, 2, 3, 5, 8 e 13
  • status válidos: pending, started, delivered e accepted
  • não pode pular direto para um status fora da sequência, ou seja, pode avançar de pending para started, mas não pode avançar de pending para delivered
  • ao mudar o status de uma história, o sistema deve registrar num histórico de versionamento o usuário responsável, data e hora e qual alteração foi feita (ex.; { user_id: 12, status: [:accepted, :pending] })
  • os botões/links para avançar status nas views devem mostrar apenas o próximo status válido
  • pode voltar para "pending" a partir de qualquer status
  • só deve permitir avançar uma história para “done” se todas as taks estiverem marcadas como finalizadas
  • finished_at / started_at: não pode finalizar numa data menor que a iniciada, etc.

Modelagem sugerida

Modelagem sugerida


Deploy (local)

Certifique-se que seu sistema operacional possui os requisitos para executar este app.
  • Rails 5.2.3
  • Ruby 2.6.3
  • MariaDB

Após baixar o projeto (clone | zip), utilize o Bundler para instalar as dependencias:

$ bundle install

Edite as credenciais para conectar no banco de dados.

# config/database.yml

  host: '127.0.0.1' 
  port: '3306'
  username: 'your_user'
  password: 'your_password'

Crie o banco de dados e execute as migrações.

$ rake db:create && rake db:migrate

Inicie o servidor e acesse pelo navegador. O app deverá estar acessivel em http://localhost:3000

$ rails server

Change log

1.0.0-alpha

  • Setup do projeto e banco de dados
  • Registro e autenticação com Devise
  • Testes para models (cobertura em regras de negócio)
  • CRUD de Project
  • Interface do board
  • CRUD de Story
  • Edição dinamica de Tasks no formulário de Story com Cocoon
  • "Datepicker" para campos de data com Tempus Dominus
  • "Drag in drop" para arrastar "cards" em "pipelines"
  • Edição de "card" em modal
  • Testes funcionais (em views) com Capybara
  • Deploy no Heroku