nicolaslazartekaqui
2/20/2018 - 10:19 PM

Desafio para Dev Rails Netshow.me

Desafio para Dev Rails Netshow.me

Desafio para Dev Rails

Apresentação

O desafio consiste em que você crie um pedaço muito importante da experiência ao vivo do Netshow.me: a tela de transmissão.

  • Crie uma tela de transmissão com um player [1] e um chat [2];
  • É preciso que toda a audiência (todas as pessoas que estão assistindo a transmissão) seja guardada em uma base;
  • Para identificar uma audiência, como não temos autenticação, na url da transmissão podem ser passados os parâmetros user_name, user_email e user_avatar_url;
  • Cada audiência terá um token único, esse deve ser o identificador pra tudo dessa audiência. Quando um usuário se identifica usando os parâmetros essas informações são guardadas em conjunto, dessa forma no futuro ele só precisa passar o parâmetro user_email para pegar o token certo;
  • Quando não informado os parâmetros a audiência é registrada como anônima;
  • Se um usuário não se identificar e abrir outra aba, ele deve ser identificada como a mesma audiência da aba anterior;
  • Precisamos que seja guardado o tempo assistido da transmissão, por cada audiência e quais os momentos exatos que ele assistiu;
  • No player deve ter um tag para informar o total de pessoas (audiência) que estão assistindo no momento, ou seja quantas pessoas estão assistindo a transmissão simultaneamente;
  • Precisamos de um endpoint, que retorne todas as informações da audiência em formato JSON para consumo posterior;

[1] Para utilizar o player, utilize alguma biblioteca de player js (ex: VideoJs) lendo o arquivo m3u8 https://content.jwplatform.com/manifests/yp34SRmf.m3u8. O player precisa ter o autoplay configurado e uma tag sobre ele informando que a transmissão está ao vivo.

[2] Para criação do chat utilize alguma biblioteca de push notification (ex: PubNub).

Observação - Não tem nenhuma estrutura definida ou um fluxo, no netshow.me precisamos que nossos dev sejam criativos com as soluções. Ou seja você é livre para criar a melhor solução que pensar, será avaliado o desafio como todo.

Importante

  • Deve ser desenvolvido utilizando Rails;
  • Utilizar base de dados Postgres;
  • Deve ter cobertura de testes;
  • Projeto tem que ser entregue no Github ou Gitlab;
  • Precisamos de um link do projeto rodando no Heroku;
  • Todo front utilizar bootstrap;

Must Have

  • Não se preocupe em entregar uma coisa linda (visual/front), mas todo o código seja front ou back tem que ser limpo, bem escrito e otimizado;
  • Lembre-se que é a replicação de uma experiência ao vivo, quanto mais leve e sutil for as respostas de tudo melhor;