Desde o início do curso de Análise e Desenvolvimento de Sistemas, já haviam nos informado que o Trabalho de Conclusão de Curso teria um peso muito mais prático do que teórico — embora este último não fosse deixado de lado. Ainda assim, durante os primeiros períodos, enquanto aprendia programação, eu não fazia ideia do que apresentaria ao final da graduação.
Com o passar do tempo e a aproximação dos prazos, minha ideia inicial foi desenvolver um sistema agregador de serviços para a prefeitura. Cheguei a implementar uma parte considerável da solução, mas, quando faltavam apenas três meses para a apresentação final, percebi que não estava realmente satisfeito com o projeto. Foi então que tomei uma decisão que, para muitos, parecia imprudente: recomeçar tudo do zero.
Meu professor orientador foi abertamente contra a ideia. Ele me apresentou diversos motivos para desistir, sendo o prazo o principal deles. Mas eu estava convencido de que conseguiria entregar algo melhor. Assim, abandonei o sistema que já estava em desenvolvimento e comecei novamente.
Eu não queria criar apenas mais um projeto com um nome genérico e uma dúzia de CRUDs. Queria desenvolver algo que eu mesmo gostaria de usar, que tivesse personalidade e até um pouco de senso de humor. Foi assim que nasceu o PromoCão — O Farejador de Promoções.
Nos três meses seguintes, dediquei praticamente todo o meu tempo livre ao projeto. À medida que ele evoluía, fui adicionando detalhes, refinamentos e pequenas sutilezas que ajudavam a construir sua identidade.
No fim das contas, além de arrancar alguns sorrisos dos veteranos e da banca avaliadora, o projeto me rendeu a nota máxima na apresentação. Mais importante do que isso, foi a primeira vez que senti que havia criado um software com personalidade própria, e não apenas mais um trabalho acadêmico.
As documentações podem ser consultadas nos links a seguir:
Funcionalidades
Entre as principais funcionalidades implementadas estão:
- Cadastro e autenticação de usuários comuns e administradores;
- Envio de promoções pela comunidade;
- Fluxo de aprovação e moderação de promoções;
- Visualização pública das promoções aprovadas;
- Área administrativa para gerenciamento do conteúdo da plataforma.
Tecnologias Utilizadas
Na época, optei por utilizar a stack MERN, uma das combinações mais populares para aplicações JavaScript full stack:
- MongoDB: banco de dados NoSQL utilizado para armazenamento das informações;
- Express.js: framework responsável pela construção da API backend;
- React.js: biblioteca utilizada para o desenvolvimento da interface web;
- Node.js: ambiente de execução que permitiu utilizar JavaScript tanto no frontend quanto no backend.