Pitch: Lancei meu primeiro SaaS, e aprendi muito com isso.

Fala pessoal, aqui é o Vitor, de novo, e pela última vez para anunciar que lancei meu primeiro SaaS: Curto, uma plataforma de links curtos e engajamento.

Fiz outros três posts falando sobre como foi a evolução da plataforma, se você se interessar, aqui vai os links, onde espero te ajudar de alguma forma:

O maior MVP da história

Se você nunca ouviu falar desse termo, MVP (Minimum Viable Product) significa Produto Mínimo Viável, que por sua vez, aponta para a versão mais básica de um produto que pode ser comercializável, dedicando o mínimo de recurso para entregar a principal proposta de valor da idéia por trás de um produto.

Simples né? Não pra mim, pois eu enxerguei esse projeto como um desenvolvedor, e não como um empresário. Por encarar as coisas como um desenvolvedor sedento em construir algo legal, o tal "Produto Mínimo Viável" nunca sequer ficava viável 😂, pois entregar uma aplicação "incompleta", isto é, com bugs, sem as melhores práticas e sem uma arquitetura escalável, estava fora de cogitação.

O que era pra levar 2 semanas para uma versão básica do produto, levou 5 meses 🤡 e nem estou perto de terminar todas as features que eu tinha pensado para o produto.

A imagem abaixo relata exatamente o que eu aprendi nesse processo:

MVP

A consequência de um MVP gigante.

Ter um MVP tão longo naturalmente fez com que minhas expectativas ficassem muito altas. Ouvi de muita gente ao meu redor (amigos, ex-chefes, ex-colegas de trabalho) de que o produto estava muito bom, eu concordava com isso pois acredtiava ter feito um bom trabalho.

Só que não é como se eu fosse desbancar o bit.ly, na real, nem era a idéia, mas dedicar tantas noites em algo te faz pensar que aquilo é realmente muito especial, quando na verdade, na maioria das vezes, não é (inclusive, tem um video muito legal do Filipe que fala sobre isso).

O sucesso de um produto não tem a ver com a quantidade de tempo dedicada na sua construção, e sim no conjunto da obra (construção de audiência, marketing, novas entregas, pesquisa de mercado, experiência de usuário e muitas outras coisas) após seu lançamento 🚀.

eu x twitter

Calma, isso não é uma história triste.

Apesar da melancolia, essa não é uma história triste. Afinal, no meio de tanta idéia engavetada, consegui lançar meu primeiro produto, e isso é uma marca e tanto, do qual me orgulho muito.

Posso dizer com certeza de que construir esse projeto me fez crescer de inúmeras maneiras. Pude conhecer mais sobre algumas ferramentas, pude desenvolver novas habilidades e conhecer pessoas incríveis no caminho.

A parte boa: Ganhei $5.000 em créditos na AWS.

A AWS, possui um programa chamado Activate for Startups, feito para impulsionar startups na construção e desenvolvimento de seus produtos.

Me inscrevi no programa e ao usar um cupom disponibilizado em uma comunidade de Founders, consegui $5.000 em créditos na AWS para hospedar e operar o Curto, que no custo que estou tendo mensalmente, garantirá quase 5 anos de operação sem custo.

Tempo suficiente para escalar o produto, ou, se não der certo, dropar com ele.

Esse programa não somente disponibiliza créditos para uso na AWS, mas também oferecem várias ofertas bem legais para ajudar na operação do seu projeto, onde destaco as seguintes:

  • Isenção de taxa de transação no Stripe nos primeiros $ 25.000 processados.
  • $200 em créditos na Vercel durante 6 meses.
  • 6 meses grátis de Notion Plus, incluindo IA ilimitado.

A parte técnica

Nos outros posts eu falo um pouco mais sobre os detalhes da implementação da solução, mas aqui vai uma lista com as tecnologias que eu usei pra implementar:

  • Next.js para o front/redirecionamento.
  • Spring Webflux para a API principal.
  • MongoDB como banco de dados.
  • S3 como Storage.
  • Amazon SES para envios de e-mail (estou pensando em migrar para Resend)
  • SNS/SQS como filas assíncronas no backend.
  • Docker para container.
  • Nginx para webserver.
  • Redis para cache.
  • ConvertKit para newsletter e mail marketing
  • CloudFlare para WAF e DNS.

Na AWS, escolhi uma t3.medium para hospedar a solução nesse momento, com um Auto Scaling Group para escalonamento automático em caso de aumento de volume.

No MongoDB, atualmente estou executando um cluster dedicado M10.

Conclusão

Espero que quem tenha lido até aqui tenha gostado e aprendido algo com meu relato. Fiquem atentos a novidades e caso queiram conversar um pouco mais sobre o processo, ou tenham alguma sugestão para próximos passos, entrem em contato comigo através dos seguintes canais:

E-mail: vitor@curto.io LinkedIn: https://medeirol.ink/linkedin GitHub: https://medeirol.ink/github Instagram: https://medeirol.ink/instagram YouTube: https://medeirol.ink/youtube

Sensacional liverday! Está muito legal acompanhar a evolução desse seu projeto, obrigado por trazer essas informações aqui para o TabNews 🤝

E olhando com mais calma, vi que um dos planos possui uma feature de Testes A/B e fiquei curioso como que exatamente funciona isso. É feita sempre uma divisão de 50% entre os lados ou você adiciona algum cookie para que quando uma pessoa entre por um lado, ela sempre fique nele caso acesse o link novamente?

Oi Filipe, tenho um protótipo pronto, mas que ainda não está disponível pra uso. Mas funciona de forma muito parecida com o que você pensou, exceto pela porcentagem, que fica à gosto do usuário. A idéia é o usuário dono do link curto definir uma % para cada variação de destino presente no link. Tendo essas porcentagens, uso uma técnica chamada [Weighted Round Robin](https://www.educative.io/answers/what-is-the-weighted-round-robin-load-balancing-technique), normalmente usada no balanceio de carga, pra escolher qual dos destinos redirecionar o usuário, então, vinculo o cookie de sessão do usuário com o destino obtido. A desvantagem dessa abordagem, é que quando o usuário limpa os cookies do navegador, pode acontecer dele cair em um novo destino. Espero que eu tenha conseguido me explicar!
Conseguiu explicar perfeitamente e sensacional! Tanto por linkar a metodologia de distribuiçõa que usa, quanto por também grudar o usuário em um dos destinos e com isso ter resultados mais fidedignos. Parabéns pela implementação meu caro! 🤝
A desvantagem dessa solução não é apenas quando limpa os cookies, né... a pessoa pode acessar de outro dispositivo, com outro navegador, com aba anônima, etc... Será que faria sentido uma melhoria futura no qual poderia ter a opção de receber uma chave na url? Por exemplo, assim: `https://curr.to/3azh6?key=123` Nesse caso, a sua aplicação seria responsável por, dada uma determinada key, retornar sempre a mesma URL (uma operação de hash em cima da key poderia ajudar aqui). Vantagem: - se o seu usuário tiver uma key que faça sentido (por exemplo, id do usuário, id da ordem de pagamento, etc), a funcionalidade irá funcionar independente do cookie.
Essa não é uma desvantagem exclusiva da solução que desenvolvi, mas do Teste A/B mesmo. Quando falamos em usuários logados, isso se resolve com uma chave forte, igual você comentou, como um id de usuário. Mas quando falamos em usuários anônimos, que normalmente serão o público alvo do teste (pessoas que não sabem da existência do Curto, que clicaram no link curto). Por não terem nenhum vínculo com a plataforma, fica difícil ter essa chave forte, talvez a melhor opção seja o IP, que pode ser alterado também com o uso de VPNs. É uma feature muito podeorsa, mas tem esse tradeoff que pode, significativamente, alterar os resultados. Obrigado pela sugestão, isso me deu uma ótima idéia haha!
Se não tiver uma key que faça sentido, acho que não tem muito o que se fazer, mesmo! A ideia foi mais ter uma opção futura de quando o cliente tiver essa key. Ótimo que te deu ideia! Se possível, compartilha aqui :D

Ficou muito foda, eu trabalho eu um lugar aqui que as vezes precisa. Ja vou deixar salvo aqui pra usar o seu

Parabéns, Vitor! Impressionante como tu conseguiu conciliar trabalho, vida pessoal, nascimento de filha e esse projeto, que, apesar da demora e do "sofrimento", ficou muito bom!

Uma ideia, faça os usuários ganharem ao encurtar seus links, antes de redirecionar para o link principal faça pelo caminho uma forma de monetizar também.

Outra coisa, adicione i18n, esse é um nicho de site que não vale a pena ser só local mas global.

Do resto, está perfeito para o sucesso!

Muito bacana sua experiência!

Você pensa em abrir sua estratégia de marketing ou compartilhar parte do processo? Como está reunindo keywords, se está fazendo SEO, fb ads (quais nichos e criativos), CAC, etc?

Sei que são infos não usuais de serem compartilhadas em locais técnicos como esse, mas acho que a comunidade carece muito de informações assim. Vejo muita gente aqui tentando empreender e esbarrando na maior dificuldade de todas: Conseguir clientes.

Seria bem legal compartilhar algumas de suas experiências nesse sentido :) E parabéns mais uma vez!

Minha idéia é abrir o máximo de coisas possiveis durante o desenvolvimento e operação da plataforma, e apesar de ainda não ter maturado tanto a estratégia, pretendo abrir sim! Acredito que mais do que só criar esse sistema, meu desejo é poder documentar isso, com o objetivo de ajudar mais pessoas! Assim que tiver algo mais elaborado, compartilharei com vocês!

muito top , parabens !!!! te adicionei no LINKEDIN :)

legal demais cara, uma sugestão que eu daria é olhar os servidores graviton AWS, concerteza um t4g é mais economico, da uma olhada

Queria uma opinião com embasamento na sua experiencia, tenho experiencia prévia com c# (onde estudei mais lógica e algoritmo), js (através de jquery), css e html (em pequenos projetos com plataformas low code + html e css personalizado tipo wordpress e shopify).

Tenho uma ideia de um SaaS, grande partes das funcionalidades se dão por meio de API (principalmente com I.A).

Agora vem a questão, estou pensando em pegar 3 meses de estudo profundo para front end, enfase em react + o back necessário para soltar o MVP, é um período viável visando que vou aplicar grande parte do estudo diretamente no projeto?

Cara, sinceramente, é um período bem curto, bem provavel que nao seja suficiente pra te preparar pra todo o desafio de construir um SaaS do zero. Se você ta estudando com o objetivo de empreender com SaaS, sugiro você ir por dois caminhos: Aumentar esse periodo pra uns 8-9 meses, ou comprar algum template de Saas no nicho que vc quer empreender, como ele terá muitas features prontas, vai facilitar na hora de aplicar sua idéia. Lembrando que um produto não é feito só de tecnologia, tem muitas "regras não ditas" que precisam ser seguidas, como: - marketing - pesquisa de mercado - validação de idéias - experiência do usuário - design (de solução e projeto)