[Dúvia] Criar uma plataforma de aulas com aparência semelhante ao netflix.

Salve pessoal, tudo bem? Tenho uma caminhada um pouco curta na área ainda, trabalho com programação a pouco mais de 1 ano, sendo basicamente com React + Java.

Nos últimos tempos estava querendo desenvolver algo que não fosse na empresa que trabalho e aconteceu de um conhecido me solicitar um orçamento. O projeto(inicialmente) é desenvolver uma plataforma para poder hospedar aulas. A aparência seria parecida com a netflix porém customizada para o nicho dele. Fazer integração com pagamento. Possivelmente algum tipo de IA e reconhecimento de comandos por voz.

Mas agora quando fui precificar, vi que não fazia ideia de quanto cobrar. Estimar tempo para entregas. Alguém consegue me dar um norte, tanto na questão de valor quanto no nível de dificuldade(tranquilo de fazer?)

Tudo bem?

As maiores dificuldades que pode enfrentar são integração de pagamentos, segurança de dados e segurança contra a cópia do conteúdo (praticamente impossível) e por ultimo mas não menos importante um algoritmo para diminuir a qualidade do vídeo no caso de conexões de clientes lentas.

Tudo vai depender de como o seu cliente deseja a integração dos pagamentos, vai usar um gateway que facilita a integração? Ou vai criar uma integração direta via API PIX de algum banco etc.

Eu acredito que a complexidade desse projeto entre baixa, media, alta e muito complexo, ele está na faixa alta.

Precificar um projeto e estimar o tempo de entrega pode ser desafiador, especialmente quando é a primeira vez que você está desenvolvendo algo fora do ambiente da empresa, lembre-se sempre do mantra, quando seu cliente pede algo igual a algo que já existe, diga a ele, claro é perfeitamente possível, se você pagar o mesmo que a empresa que criou pagou. Aqui estão algumas orientações que podem ajudá-lo:

  1. Analise os requisitos do projeto: Certifique-se de entender completamente os requisitos do projeto, incluindo todas as funcionalidades, integrações e personalizações que são solicitadas. Quanto mais claro você tiver os requisitos, mais fácil será estabelecer um preço justo.

  2. Divide o projeto em etapas: É útil dividir o projeto em etapas menores e estimar o tempo necessário para completar cada uma. Isso ajudará você a ter uma visão mais precisa do tempo total necessário para a conclusão. Por exemplo, você pode dividir o desenvolvimento do projeto em etapas como design da interface, desenvolvimento do front-end, desenvolvimento do back-end, integração de pagamento e IA.

  3. Pesquise os preços do mercado: Faça uma pesquisa sobre quanto outros desenvolvedores estão cobrando por projetos semelhantes na sua região. Isso lhe dará uma ideia do preço médio e permitirá que você estabeleça um valor competitivo, mas o mais importante é ter uma ideia do seu custo hora.

  4. Considere sua experiência: Leve em consideração o seu nível de experiência e habilidades em relação ao projeto específico. Se você está começando e considera que a tarefa será um desafio, pode cobrar um preço mais baixo para refletir isso. À medida que ganha mais experiência, pode aumentar seus preços.

  5. Calcule os custos adicionais: Considere outros custos além do tempo de desenvolvimento, como custos de hospedagem e domínio, integração de APIs de pagamento ou serviços de IA, além de suporte e manutenção contínuos após a conclusão do projeto. Um projeto só termina quando a empresa fecha.

  6. Seja transparente com o cliente: Informe ao seu cliente quanto tempo você acha que levará para concluir o projeto e explique como você chegou a esse número. Discuta sua estimativa de preço com ele de forma transparente e esteja aberto a negociar se necessário, e deixe claro que é tudo estimativa, não há como prever corretamente.

Muito obrigado meu caro, acho que estava subestimando a dificuldade do projeto. Nunca fiz integração com gateway de pagamento e não tenho noção da complexidade, vou ver mais sobre o assunto. Estou procurando em sites de freelancer projetos similares para tentar encontrar os valores e estimativas de tempo para poder me basear. Ademais, valeu mesmo pela contribuição, me ajudou a ser mais realista e me balizar com alguns desses pontos que tu pontuou. Ps: estou sem tabcoins, quando obtiver volto pra poder marcar

Opa, @fredericoufsj! Vou dar meus 10 cents de contribuição aqui porque, há pouco mais de 1 ano atrás, peguei um projeto exatamente igual ao que você descreveu (uma plataforma, estilo netflix, para hospedar aulas). O cliente queria liberar aulas semanais com o mesmo conteúdo em formatos diferentes (vídeo, podcast, blog post e pdf) e alguns adicionais para quem assinasse o plano "premium". Tudo isso em cerca de 45 dias e com pouquíssima experiência em projetos grandes. Vou separar em etapas a partir daqui para descrever toda minha jornada.

Stack Escolhida

Inicialmente imaginei que seria um MVP para uma turma pequena, algo como uns 10 a 15 alunos, então fui confiante em tecnologias que eu já conhecia para poder entregar.

Para o backend, escolhi o Strapi CMS, um headless cms muito bom que já me entregava boa parte do que eu precisava: um painel para cadastrar os conteúdos, gerenciar usuários e autenticação, api rest e graphql. Tudo em um único lugar, sem precisar quebrar a cabeça, afinal, não tinha tempo e era um MVP. Integrei com AWS S3 para hospedar os assets e fiz deploy na Heroku.

Para o frontend escolhi o Next.JS por conta do Next Auth, que me facilitou muito a parte de autenticação dos usuários, e porque seria uma boa utilizar o Incremental Static Regeneration que o Next disponibilizava. Claro, fiz deploy na Vercel.

Para os pagamentos, escolhi a Stripe que, ao meu ver, é uma das melhores plataformas de pagamento que existem hoje. Tem uma API e SDK muito boas e taxas razoáveis quando comparado com os outros player que temos aqui nas terras tupiniquins.

Regra de negócios

A princípio, o cliente queria algo como a Netflix mesmo. O usuário escolhe entre dois planos e paga uma mensalidade para ter acesso aos conteúdos, podendo cancelar quando quiser. Isso foi um fator crucial para a escolha da plataforma de pagamentos que citei acima, pois ela atendia muito bem ao modelo de negócios que o cliente queria.

Agora vamos à saga...

Houston, we have a problem

Lembra que eu disse que imaginava que seria um MVP para umas 15 pessoas? Então...

O cliente fez uma live de lançamento e disponibilizou o link do checkout. Cerca de 100 pessoas assinaram.

Por sorte utilizei a Vercel para o front e a Stripe como plataforma de pagamentos (digo sorte porque na época eu não entendia absolutamente nada de como servir aplicações para múltiplos acessos simultâneos. Só havia trabalhado com sites que recebiam, no máximo, alguns milhares de acesso no mês todo).

Do ponto de vista do Marketing, foi um sucesso.

Mas os dias foram passando e os problemas foram aparecendo, principalmente em performance. A Vercel segurou bem o front, mas eu não havia disponibilizado os assets via CDN, principalmente os vídeos.

E falando em vídeos, por ser um MVP, estávamos disponibilizando vídeos em formato .mp4 mesmo, sem transcoding, DRM ou coisas assim que são triviais nesse modelo de negócios mas eu não fazia a mínima ideia que existia.

Há cerca de 3 meses atrás (quase 1 ano depois do lançamento) o cliente quis mudar a regra de negócios. Agora não era mais modelo de assinatura e sim pagamento anual com possibilidade de parcelamento em até 12x. Muito bom, mas a Stripe não aceita pagamentos parcelados.

E como ficam os usuários que estão no modelo atual? Por falar neles, já são mais de 1.000 assinantes na aplicação que era pra ser apenas um MVP (claro que já corrigi inúmeros dos problemas que apareceram no caminho pra continuar com a aplicação de pé).

Então lá vamos nós ter que mudar toda a estrutura da aplicação e a plataforma de pagamentos para poder atender ao cliente...

Vou parar por aqui porque acho que já me alonguei demais e creio já ter passado a ideia.

Quanto cobrei nesse projeto?

R$ 8.000,00 (sim, apenas 8 mil reais). Me arrependo toda noite quando coloco a cabeça no travesseiro. Perdi noites e finais de semana corrigindo bugs, falhas de sincronia entre pagamentos e liberação de acesso entre outros problemas. Mas foi esse projeto que me me fez adquirir cerca de 80% do conhecimento que tenho hoje (e considero muito pouco ainda).

Enfim, não há como precificar nem estimar tempo logo de cara. Não dá pra saber com exatidão quanto tempo você levará e quanto precisará investir em conhecimento para chegar no resultado "final" (entre aspas porque em desenvolvimento não tem final, se o projeto der certo sempre haverá alguma coisa pra se fazer).

Descubra quanto custa a sua hora de trabalho e coloque cerca de 30% a mais no preço final. Combine entregas e pagamentos semanais.

Em relação ao nível de dificuldade, numa escala de 0 a 10, diria que está próximo de 8. Mas com as dicas que tu pegar da galera aqui, pode reduzir pra 6.

Bom, é isso. Se eu lembrar de mais coisas volto a compartilhar aqui.

Caraca mano, que contribuição foda. Clareou bastante pra mim. Continuo em conversas com o cliente e isso vai me ajudar demais. Espero alcançar o sucesso que tu atingiu. E muito obrigado pelos seus "10 cents".
Bom demais.. ri muito Mas vou mandar aquele orçamento de 2 milhões mesmo.. Sério. O vídeo ficou muito bom, Vai agregar demais

2 milhões de reais da pra começar esse projeto e eu falo isso com todo otimismo.

tu vai usar algum sistema pronto pra entrega do conteudo? ou é real que ele quer criar uma plataforma de streaming?

Não, somente a aparência mesmo que é da netflix. A plataforma é para hospedar as aulas do curso dele. Não é algo tão ambicioso assim não. Mas ele quer algumas coisas um pouco "fora da caixa", como reconhecimento de comandos por voz.
então primeiro passo é deixar isso claro pro cliente que tu vai fazer apenas o Frontend lembra que a maioria dos elementos do Netflix que compoem a tela e que ele provavelmente acha atraente estão vindos de metadados que foram extraidos dos videos eu acho um desafio interessante de se fazer mas a primeira coisa é esclarecer como o video já hospedado dele vai ser integrado com esse "Netflix" que tu ta criando, tu já fez um desenho dessa arquitetura?
Sim vou deixar claro com ele as limitações. Estava pensado em usar um hadless cms, me parece ser algo factível. Durante um imersão na rocketseat fiz algo nesse sentido, onde desenvolvia o front e utilizava o graphcms. Ainda estou avaliando a melhor forma que eu consiga fazer.
Eu fiquei muito encucado com esse 'coisas fora da caixa' kkkkk O que ele quer fazer com o reconhecimento de voz?
Inicialmente seria como o youtube, onde clicamos no "buscar", falamos o que queremos ao invés de digitar. Mas depois a ideia é implementando outras funcionalidades como navegar na plataforma, executar demais ações por meio de comandos de voz.
Meu time já desenvolveu uma plataforma parecida com o netflix, um sistema de ead muito bom. Talvez eu possa te ajudar Qualquer coisa me chama no discord @shuhikari
Opa, vou te adicionar lá, depois te chamo beleza?

Minha sugestão: se tu não sabe o escopo do projeto e nunca precificou antes algo nesse estilo, cobra um valor por hora fazendo a cobrança semanalmente.

Concordo com o Lucas Montano. O escopo desse tipo de projeto é infinitamente maior do que parece, e cobrar por hora, com recorrência, é o mais indicado. Coincidentemente, ontem o "Filho da Nuvem" publicou um vídeo falando dos maiores desafios que ele enfrentou ao fazer a plataforma de ensino dele, a DevGym (que em essência é próximo da ideia que tu apresentou aqui). Recomendo assistir ao vídeo pra ter uma noção geral dos desafios.

Link do vídeo

Valeu pelo feedback. Assisti ontem esse vídeo e realmente mostrou a complexidade que pode gerar um projeto desse tipo. Deixei até um comentário lá, pedindo a continuidade de vídeos sobre o projeto.

Vou propor um contraponto a galera: não pegue projetos que vão além do seu escopo de conhecimento. Em alguns momentos precisamos ter maturidade para entender que é demais para nós.

Um projeto como esse é simples de dizer, complexo de produzir. Por mais que você cobre por hora, programe entregas. Tem muita coisa para fazer, muita mesmo. E se você tem dúvidas sobre isso, está além da sua experiência no momento.

É importante aceitar desafios na vidas, mas quando é demais precisamos entender que o processo se tornará frustrante. Além dos desafios técnicos, você vai ter que estudar muito mais coisas ao mesmo tempo, o que fará com que o tempo de desenvolvimento aumente exponencialmente.

Entendo que as vezes precisamos e não podemos perder oportunidades, mas nesse caso maneje as expectativas do contratante. Mostre-o alternativas de simplificar o projeto e converta para pequenas entregas. Assim as coisas podem ser adicionadas pouco a pouco para se tornar uma plataforma robusta daqui alguns meses. Até lá, pequenas soluções devem resolver as dores principais.

Acho que o problema é já colocar a expectativa de uma Netflix de cursos. Isso já trás problemas na construção inicial. Hoje existem ferramentas prontas que podem ajudar em um MVP como LearnDash ou similares. Antes de pensar em quanto irá cobrar, analise o quanto pode entregar.

Muito obrigado pela contribuição. Minha ideia é desenvolver algo simples,há um tempo atrás vi uma aula da Rocketseat em que ele ensinava a criar uma plataforma usando um headless cms. Acho isso seria suficiente para o que estou me propondo a fazer. Mas antes vou deixar claro com o cliente e apresentar as alternativas, como tu sugeriu. Vlw

Olá @fredericoufsj, tudo joia?

Além de todos os comentários ditos aqui, vale a pena ter um tempo planejado para cada etapa do projeto, talvez dividir por milestones ou releases e priorizar as funcionalidades que mais importam para estas entregas.

Uma forma de começar é entender tudo que você sabe e procurar Clones da NetFlix, pode te dar uma bagagem de como continuar a implementação.

O que é necessário tomar cuidado é com o planejamento funcional do projeto e também com a arquitetura, para você não ir crescendo este projeto de maneira desenfreada e chegando até a ter overenginering por não ter tido um bom planejamento inicial.

Listando de uma maneira conservadora o que é necessário para seu planejamento:

  • Entenda bem os requisitos
  • Priorize cada funcionalidade
  • Planeje prazos para cada entrega
  • Escolha as tecnologias utilizadas
  • Planeje a arquitetura do projeto
  • Organize as pessoas que irão trabalhar no projeto
  • Deixe claro todos os riscos
  • Por último, mas mão menos importante, PRECIFIQUE CADA INTERVENÇÃO SUA QUE LHE CUSTARÁ TEMPO.

Próxima etapa é a viabilidade do projeto:

  • Tenha protótipos do projeto que foram aprovados pelo cliente para não ter surpresas mais pra frente (já pensou você passa dias - se não meses - desenvolvendo para o cliente e ele diz que não é o que precisa?
  • Faça MVPs das funcionalidades antes de cada entrega oficial

Depois disso é a fase de implementação e aí os outros comentários já deixaram claro os desafios que você irá encontrar com este tipo de implementação. Realmente não é um projeto simples, tem dificuldade alta e normalmente é um projeto que envolve diversas pessoas com expectativa de meses, se não anos de entrega. Mas, não quer dizer não tem esperança de ser um projeto simples, como uma casca da NetFlix 🔥 Clone do NETFLIX em REACTJS para Iniciantes no Youtube de Bokieky Lacerda e 🔴 How to Build a NETFLIX Clone with REACT JS for Beginners (in 3 Hours!), com as funcionalidades de uma plataforma de aulas já ouviu falar do Moodle? e aí as funcionalidades extras são implementações específicas.

Espero ter contribuído mais um pouco!

Poxa, muito obrigado pela contribuição. São dicas muito valiosas, pode deixar que irei considerá-las. O meu grande problema esta aí.. A precificação. Estou vendo alguns materiais a fim de conseguir determinar isso, mas ainda assim, é algo difícil, visto que fazer uma estimativa de tempo também não é uma tarefa simples. Por fim, muito obrigado também pelos links.