Giter Club home page Giter Club logo

conference-management's Introduction

Conference Track Management

Distribui e ajusta talks às restrições de tempo da conferência.

Índice

Iniciando

1 - Instale as dependências globais:

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

Inserindo talks

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 tecle ENTER. Será impresso na tela as talks, devidamente distribuídas em tracks da conferência.

Testes

Para executar os testes:

npm test

Design e arquitetura

  • 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 uma talk cujo horário de início pode ser alterado para mais, desde que não ultrapasse o horário final da sua session. No caso da sessão da manhã, por exemplo, o evento "Lunch" inicia no mesmo horário final desta session (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 desta session;
    • Uma talk recebe informações da proposal e o horário determinado pela session 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.
  • 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 e eslint. Para os testes foi utilizado o runner jest, juntamente com as API's sinon e chai 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.

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.