Primeiramente, faça um fork e clone deste projeto, crie uma branch (pode ser com seu nome mesmo), depois instale as dependências:
- node.js: esse projeto roda sob a plataforma node.js, portanto necessita a instalação de suas dependencias com o npm:
npm install
- Front-end: não definimos nenhuma dependência front-end, nem a maneira como elas serão gerenciadas, isso fica a seu critério.
Deixamos duas tasks npm configuradas:
- Uma utiliza diretamente o node.js:
npm start
- Outra utiliza o nodemom para gerenciar a aplicação:
Para instalar a dependencia nodemon
npm install -g nodemon
Para executar a task
npm run startNodemon
Escolha qual le agradar mais, ou execute manualmente a aplicação:
node app.js
Agora você já possui a configuração necessária, podemos começar.
O repositório possui a seguinte estrutura:
├── config/
│ └── index.js
├── controllers/
│ └── index.js
├── routes
│ └── index.js
├── services
│ ├── index.js
│ └── templatePath.js
├── views/
├── public/
│ ├── images/
│ ├── javascript/
│ ├── styles/
│ └── json/
│ └── talk.json
├── layout/
│ ├── test-front.psd
│ └── test-front-320.psd
├── .bowerrc
├── .gitignore
├── app.js
├── package.json
└── README.md
Com a aplicação em execução você pode criar seus templates na pasta views, onde cada nível de pasta até o arquivo compõe a rota, por exemplo a seguinte estrutura:
├── views
├── home/
└── chat.html
Será acessada por: http://localhost:3000/site/home/chat/
Os arquivos estáticos (imagens, css, js, less, sass, etc) devem ser utilizados na pasta public e são acessíveis em /static/path_do_recurso.extensao_recurso
Foi deixada uma estrutura preparada para sua implementação, favor a utilize-a. Abaixo segue um passo-a-passo do que esperamos ser executado:
- Desenvolver a caixa de mensagem seguindo o layout proposto no arquivo test-front.psd e test-front-320.psd;
- A caixa de mensagem deve ser inicializada ao términdo do load da página;
- Deverá carregar um histórico de conversa (utilizar o arquivo talk.json que se encontra no diretório public/json/);
- O usuário poderá: minimizar, restaurar, fechar e enviar mensagem na caixa de mensagem;
- Ao enviar uma nova mensagem, seu conteúdo deverá ser adicionado na conversa;
- Suporte funcional para IE+8;
- Atender aos breakpoints contidos nos arquivos PSD;
- Fique a vontade para utilizar o recurso que desejar, somente tomando cuidado com os itens listados no tópico restrições.
- Queremos ver como você organiza seu código CSS, então utilize o seu pre processador preferido. O importante é o seu conhecimento prático na codificação de estilos.
- Para desenvolver o responsivo não deve utilizar nenhum framework como Bootstrap ou Foundation, queremos ver como você cria seus breakpoints, e a organização de seu código CSS.
- Os arquivos gerados (CSS, Javascript, Less, Sass, etc) não devem ser minificados. As libs utilizadas não tem problema.
- Não editar o arquivo talk.json. Somente deve alterá-lo tendo uma boa justificativa, e essa deve ser informada em um comentário no código.
Avaliaremos o resultado seguindo esses pontos:
- Resultado funcional
- Resultado visual
- Manutenabilidade do código
- Clareza e limpeza do código
- Semântica HTML
- Lógica de programação