Preview do Site no Computador
Preview do Site no Celular
../Projetos_Reais/

Sistema de Formulários

    Node.js
    Mysql
    Prisma
    NodeCache
    Nginx
    Next.js
    Docker
    Docker-compose

A Igreja Adventista do Sétimo Dia que fica no Juvevê em Curitiba no Paraná precisava de um sistema de formulários que calculasse as respostas e que fosse totalmente personalizável. Antes de começar a planejar a infraestrutura, eu criei um grupo com todos os líderes da igreja que pudessem ter alguma opinião sobre as funcionalidades do sistema. Após uma semana inteira levantando requisitos de forma detalhada e de desenhar no figma todo o site, eu tinha um documento contendo todas as funções que o sistema precisaria desempenhar.

Antes de começar a programar o site, eu fiz o design no Figma e também planejei toda a estrutura de dados necessária para que o sistema fosse totalmente personalizável e para que as funções de analytics internas funcionassem de forma performática, tentando ao máximo diminuir a quantidade de joins no banco de dados enquanto eu evitava a duplicação de dados. Após entender todos os casos de uso do sistema e de desenhar a estrutura do banco de dados era o momento de escolher as tecnologias para o projeto. Eu achei prudente escolher um bom banco de dados relacional para guardar os dados. O banco de dados escolhido foi o MySql. Também levantei alguns possíveis provedores para que a igreja tivesse uma ideia de quanto iria custar mensalmente para manter o sistema no ar.

Eu sempre preferi desenvolver primeiramente o backend e depois o frontend por conta da facilidade de não ter que mockar(o que vamos ser sinceros, ninguém ama ficar mockando dados...) todos os dados no frontend logo no início do projeto. Para desenvolver o backend eu usei tecnologias conhecidas como o express e o Prisma, bem como o Nginx e Docker. Fiquei uma semana mais ou menos desenvolvendo o backend e após terminar o backend fiz o frontend em poucos dias usando o Next.js. Como o prazo do projeto era de somente 2 semanas e meia mais ou menos, desde o início eu utilizei ferramentas de cache e ferramentas para melhorar a performance. Eu sei do risco da otimização prematura, porém eu não tinha tempo e nem a oportunidade de falhar, uma vez que esse sistema seria usado em um culto com todos os membros e não poderiamos perder dados ou ficar off-line.

Com certeza, a parte de customização dos formulários foi a parte mais desafiadora por conta das inúmeras possibilidades. Mas apesar de tudo, o sistema foi para o ar e performou incrivelmente bem sem nenhum erro e com todas as funcionalidades, incluindo a geração de relatórios em tempo real, funcionando perfeitamente. Usei também o Newrelic para ter algumas métricas de performance.

Quer tirar sua ideia do papel?

Vamos trabalhar juntos