Distribui e ajusta talks às restrições de tempo da conferência.
1 - Instale as dependências globais:
- Node.js (10.x ou superior)
2 - Acesse a pasta-raiz do projeto e instale as dependências via npm
npm install
3 - Inicie a aplicação (ambiente de desenvolvimento)
npm start
Quando surgir o prompt na tela siga os passos abaixo:
-
A talk deve ser um texto no formato
<Nome da talk> (<XX>min | lightning)
. Exemplos:- Sit Down and Write 30min
- Rails for Python Developers lightning
-
Após inserir, tecle
ENTER
para confirmar e inserir a próxima talk; -
Quando finalizar digite
:q
e tecleENTER
. Será impresso na tela as talks, devidamente distribuídas em tracks da conferência.
Para executar os testes:
npm test
-
A aplicação é constituída basicamente através da interação e junção de quatro blocos: proposal, talk, session, track e conference. A pasta
models
contém as fábricas que criam estes blocos, retornando objetos imutáveis; -
A hierarquia destes objetos possui a seguinte forma:
- Uma
conference
possui zero ou mais tracks; - Uma
track
possui duas sessions: uma de manhã e outra a tarde; - Uma
session
possui zero ou mais talks e pode ter um evento. Um evento nada mais é que umatalk
cujo horário de início pode ser alterado para mais, desde que não ultrapasse o horário final da suasession
. No caso da sessão da manhã, por exemplo, o evento "Lunch" inicia no mesmo horário final destasession
(12PM). Já na sessão da tarde, o evento "Network Event" deve iniciar a partir das 16PM, mas pode ter o seu horário postergado até no máximo as 17PM, que é o horário final destasession
; - Uma
talk
recebe informações daproposal
e o horário determinado pelasession
para o seu início; - Uma
proposal
recebe um texto e verifica se seu formato está adequado. Em caso positivo, extrai as informações para um objeto.
- Uma
-
Foi criada a pasta
util
para isolar as funções de manipulação de data necessárias para a aplicacão. Para o desenvolvimento destas funções foram utilizados apenas os recursos nativos da linguagem; -
Para padronizar a indentação, identificar e facilitar a remoção de erros do código foram adicionadas as dependências
prettier
eeslint
. Para os testes foi utilizado o runnerjest
, juntamente com as API'ssinon
echai
para criação de stubs e asserções, respectivamente. Outras ferramentas utilizadas (husky
,lint-staged
) tem o objetivo de assegurar a execução das ferramentas de qualidade durante cada alteração.