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.
Log in or sign up for Devpost to join the conversation.