Inspiration

O Campeões do Tolete nasceu da combinação de três coisas improváveis: o uso frequente do banheiro, a preocupação com o desperdício de papel higiênico e as conversas descontraídas entre amigos sobre desafios absurdos. A ideia começou como uma brincadeira para criar missões cada vez mais criativas e engraçadas relacionadas ao momento pós-banheiro, mas evoluiu para uma experiência gamificada que também levanta reflexões sobre consumo e sustentabilidade.

What We Learned

Este projeto nos mostrou que até mesmo as ideias mais inusitadas podem se transformar em algo divertido, desafiador e tecnicamente interessante. Aprendemos que é possível extrair valor de conceitos aparentemente sem sentido quando eles são combinados com criatividade e uma boa experiência para o usuário.

Do ponto de vista técnico, tivemos nosso primeiro contato prático com CassandraDB. Isso nos permitiu aprender conceitos importantes sobre modelagem para bancos distribuídos, particionamento de dados e os desafios de operar uma aplicação utilizando uma tecnologia diferente dos bancos relacionais tradicionais com os quais já tínhamos experiência.

How We Built It

O Campeões do Tolete foi desenvolvido como um monorepo dividido em três componentes principais:

  • Backend: construído com NestJS e TypeScript, responsável por autenticação, regras de negócio, cálculo de PCL (Pontos de Cu Limpo), ranking, amizades e gerenciamento das missões.
  • Frontend: desenvolvido com Next.js, React e Tailwind CSS, oferecendo uma interface moderna para registrar desafios, acompanhar pontuações e competir com amigos.
  • Banco de Dados: CassandraDB, utilizado para armazenar os dados da aplicação com foco em escalabilidade e performance.

A infraestrutura foi distribuída entre diferentes provedores:

  • O frontend foi hospedado na Vercel.
  • O backend foi implantado em uma instância EC2 da AWS.
  • O CassandraDB foi executado em um container Docker na mesma instância utilizada pelo backend.

Challenges We Ran Into

O maior desafio foi a limitação de recursos da infraestrutura disponível. Como utilizamos uma instância EC2 relativamente pequena, precisávamos executar simultaneamente dois containers Docker: um para o backend e outro para o CassandraDB.

Durante os testes percebemos que o Cassandra consumia uma parcela significativa da memória disponível, impactando a estabilidade da aplicação. Para resolver isso, estudamos as opções de configuração do banco e limitamos os recursos do container para reduzir o consumo de memória sem comprometer o funcionamento do sistema.

Além disso, trabalhar com CassandraDB pela primeira vez trouxe desafios relacionados à configuração, persistência dos dados e otimização para um ambiente com recursos bastante restritos. Essas dificuldades acabaram se tornando uma das experiências de aprendizado mais valiosas do projeto.

Share this project:

Updates