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
euser_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.
- 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;
- 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;