Executando verificação de segurança...
7

VideoPix: Dificuldades e soluções para criar um SaaS que permite streamers receberem donates para ver vídeos do youtube

Como surgimos

Meu irmão (Matheus) resolveu começar a fazer lives na twitch há cerca de nove meses ele me relatou então que tinha um problema bem chato pra exibir vídeos na live. Basicamente, quando um viewer queria que ele assistisse a um vídeo ele enviava um Pix ou um donate com o link do vídeo então, ele como streamer, precisava acessar o donate/pix, copiar o link, puxar a tela do chrome pra então exibir o conteúdo do vídeo.

A partir disso, ele me perguntou se eu saberia criar um sistema para exibir vídeos automatimente mediante o pagamento de um pix, e eu pensei: Por que não?

Base

Como base para o projeto, escolhemos alguns conceitos: O primeiro deles é a flexibilidade, queríamos permitir que o streamer pudesse realizar todo tipo de configuração, por exemplo:

  • Tempo máximo de exibição do vídeo.
  • Tempo mínimo de exibição do vídeo.
  • Quantidade mínima de views que o vídeo deve ter.
  • Preço por segundo de exibição.
  • Preço fixo.
  • Cores do texto de exibição do donate.
  • Música de alerta ao receber pix.

Início

O meu primeiro desafio foi entender como funciona para adicionar algo em alguma live, o método de funcionamento disso nunca havia me interessado então, com o auxílio do meu irmão, entrei no ambiente dele e vi que usam um software chamado OBS, o qual é um orquestrador de tudo que acontece na live, permitindo alterar o layout, inserir layers e etc, dentro disso o que me chamou a atenção foi a possibilidade de exibir um layer com o conteúdo provindo de um site.

Com isso, comecei a definir a arquitetura do sistema.

Arquitetura

Acredito que, para uma PoC e a criação de um SaaS, a escolha da stack não é o fator mais importante. Por isso, utilizei-me das linguaguens e tecnologias que tenho mais experiência:

  • Golang: Nossa api, responsável por lidar com toda a lógica do sistema, foi desenvolvida em golang com Gin e GORM. Também foi necessária a criação de um websocket, o qual foi desenvolvido com Gorilla.
  • Next.js: Escolhi Next.js para o desenvolvimento do frontend, pois já trabalho com React há algum tempo.
  • RabbitMQ: Mesmo sendo um sistema pequeno, utilizei um sistema de mensageria para gerenciar os vídeos a serem exibidos. Cada streamer tem sua própria fila, conectada ao WebSocket. Sempre que um vídeo é solicitado, ele é inserido na fila e processado automaticamente.
  • Postgres: Escolhi postgres como banco de dados pela sua performance/escalabilidade e pelo fato de ja ter trabalhado com ele em diversos sistemas web.

Problemas?

Gateway de pagamento

Acredito que aqui foi onde encontrei o maior problema. Encontrar um gateway de pagamento que fornecesse ao mesmo tempo, flexibilidade e um sistema de split de pagamentos. Realmente, não era meu objetivo fazer com que o streamer precisasse criar uma conta em um gateway para utilizar o videoPix, entretanto, depois de rodar muito, acabei desistindo da parte da flexibilidade e escolhi o Mercado Pago.

E como funciona? Simples! Quando o usuário cria uma conta na plataforma, ele conecta sua conta do Mercado Pago via OAuth. Assim, conseguimos distribuir AUTOMATICAMENTE os lucros entre o gateway, o SaaS e o próprio usuário.

Youtube

Para atrelar um vídeo do youtube encontrei alguns problemas:

  1. Validação de input: Era necessário validar o input do usuário, para ter certeza que ele estava fornecendo um vídeo válid e que o tempo de exibição e o tempo de início da exibição não era maior que o tamanho do vídeo.
  2. Limite de requisições: A api do Youtube tem um limite de requisições por dia, algo em torno de 10000, a ideia aqui realmente não é lidar com um problema de optimização prematura, mas sabendo que boa parte dos vídeos são repetidos, eu resolvi cachear as informações básicas do vídeo para não ter que chamar o youtube a cada validação/envio de pix.

Moderação de conteúdo

Decidir quais vídeos poderão ou não serem exibidos realmente é um problema complexo. Na VideoPix, o problema é resolvido de algumas maneiras:

  1. Youtube: A nossa única fonte de vídeos é o Youtube, desta forma, garantimos que, pelo menos pelo filtro de conteúdo do youtube o vídeo passou.
  2. Quantidade mínima de views: Neste caso, implementamos um modelo onde o streamer pode selecionar a quantidade mínima de views que o vídeo precisa ter para que possa ser exibido. Isso já automaticamente aumenta a barra e diminui a possibilidade de um vídeo sensível ser exibido. Mas ainda não resolve todos os problemas.

Futuro

Por mais que a nossa solução tenha diversos métodos de controle e possua uma base forte ainda acredito que faltam algumas coisas:

  1. Dashboard de aprovação: Essa foi uma requisição dos grandes streamers, basicamente, a ideia aqui é implementar um dashboard onde será possível os moderadores da live validarem o vídeo antes de ser exibido.
  2. Mais personalização: Sério, somos obcecados por personalização, queremos num próximo passo, permitir que o streamer defina a paleta de cores e bordas dos vídeos a serem exibidos.
  3. OnlySubs: Outra feature interessante que queremos aplicar é a criação de um modo onlysubs, onde, caso o streamer deseje, somente usuários que sejam sub de seu conteúdo possam realizar o donate.
  4. Blacklist: Outro passo muito importante no conhecimento e validação dos nossos usuários é a criação de uma blacklist com usuários que solicitaram o chargeback do seu dinheiro, esse modo, obviamente, só estará disponível para quem estiver com o modo OnlySubs ativo.
Carregando publicação patrocinada...
3

Achei a ideia fenômenal, acho que vai ser super legal se você conseguir streamers para fecharem parcerias.

Uns pontos que pensei:
1 - Acredito que seja uma boa dar uma cara mais moderna a landing page.
2 - Acho que 95% é muita grana, talvez pra captar usuários inicialmente seja uma boa, mas talvez futuramente você perca uma grana nisso.
3 - Cuidado com gateways de pagamento, eles podem bloquear sua conta sem mais nem menos, recomendo ver o post do daniel: https://www.tabnews.com.br/ChristoPy/pitch-de-r-74k-em-transacoes-a-falencia-e-blacklist-nos-bancos-porque-criei-um-gateway-de-pagamentos

1

Opa, muito obrigado pelas dicas :)

  1. Eu realmente não sou o cara do front end kkkkkk mas eu estou com algumas ideias para mudá-lo. Queria adicionar alguns exemplos de streamers que utilizaram a plataforma em suas lives e etc.
  2. Então, atualmente, eu tenho cerca de 4% de lucro líquido já que o mercado pago cobra 1% por transação, ainda acho que isso possa funcionar visto que os outros players tem essa mesma margem, mas pode ser um ponto de estudo sim.
  3. Sim, eu tô bem de olho nisso. Inclusive o ChristoPy e o Daniel tiveram parte fundamental nesse processo de desenvolvimento da aplicação, principalmente me dando dicas sobre o gateway de pagamentos. Acredito que ainda possa ter problemas mas como estou utilizando realmente um split de pagamentos imagino que isso possa diminuir um pouco a possibilidade de dar problemas. Futuramente também estudo migrar para outro.
1

Realmente, não era meu objetivo fazer com que o streamer precisasse criar uma conta em um gateway para utilizar o videoPix, entretanto, depois de rodar muito, acabei desistindo da parte da flexibilidade e escolhi o Mercado Pago.

Eu não entendi se você corre o mesmo risco que o ChristoPy publicou recentemente, mas de qualquer forma, recomendo ler a publicação dele: [PITCH] De R$ 74K em transações a falência e blacklist nos bancos – porquê criei um gateway de pagamentos. Além da publicação, o ChristoPy deixou alguns comentários explicando mais detalhes.

Boa sorte com o SaaS.