Meu primeiro projeto REAL

Leonardo Souza - Jul 11 - - Dev Community

Como tudo começou...

Ano passado conheci a FCamara por um evento que eles organizaram junto ao GDG Santos. Descobri que toda quinta feira eles abrem o escritório para pessoas que quiserem estudar e trabalhar de lá. Desde então, toda semana estou por lá e numa dessas idas conheci o Lucas Batista, coordenador do projeto que vou falar sobre hoje.

A partir do Lucas, tive contato com a Ariane, que tinha uma demanda de um sistema para cadastro de vendas que era feito manualmente, e impossibilitava ou pelo menos dificultava muito a análise dos dados e as tomadas de decisão.

Temos reuniões semanais e a partir disso a Ariane foi me passando o que ela precisava, eu fui mostrando o que eu havia feito e ainda estamos caminhando em busca de mais funcionalidades para o projeto que hoje ainda faz apenas o registro das vendas.

Sobre o projeto

Pensando nisso, o Lucas me perguntou como eu preferiria fazer o projeto e optamos pelas tecnologias que eu tinha mais familiaridade. Utilizamos Nest.JS para o backend, com Prisma. No frontend, utilizamos React, mais especificamente a biblioteca de componentes React Mantine, que utiliza Typescript nos componentes.

Funcionalidades

Atualmente, as funções de registrar, ver e deletar vendas estão implementadas. Estamos trabalhando com a parte de editar (que vou falar mais na seção de desafios) e posteriormente faremos a geração dos relatórios e autenticação.

Esse é um vídeo do fluxo de adição, visualização e deleção dos registros e vendas.
GIF do sistema demonstrando o cadastro, visualizando e deletando um registro

Desafios

Backend e uso de ORM

Por mais que eu estivesse familiarizado com o Nest, não foi tão natural escrever um projeto do zero. Demorei algum tempo a entender como validar as requisições do backend e como usar o Prisma, coisa que nunca havia feito.

Dados e formas normais

No início, pensar nas tabelas, como elas se comunicariam, porque elas se comunicariam, foi algo que demorou um tempo, alguns testes e vários migrations.

React e Typescript

Agora no frontend as coisas ficaram mais complicadas. Fazia bastante tempo que não mexia com react e lembrar como funcionava demorou um pouco. O typescript foi bem desafiador de implementar, mas fui obrigado devido a melhor funcionalidade das ferramentas que havia escolhido, então tive que estudar mais sobre o conceito de interfaces e tipos.

React - Passagem de dados entre componentes

Porém tive e estou tento alguns problemas para comunicar entre os componentes, por exemplo, como mandar os dados de um componente filho para o pai, para que ele atualize quantas vendas tem, por exemplo.

Versionamento

Como faço o projeto sozinho é mais fácil, porém entender o fluxo de trabalho é algo que ainda tenho algumas dificuldades, criação de branchs para funcionalidades e correção de bugs, merge das branchs, resolução de conflitos é uma coisa que estou melhorando.

Aprendizados

Comunicação e Gestão de Projetos

O trabalho no projeto me ajudou a melhorar minha capacidade de comunicação e a gestão de expectativas com o cliente. Alinhar as expectativas com o cliente e traduzir isso em código.

Melhoria Técnica

Aprendi bastante sobre a utilização de ORM com Prisma e como hospedar serviços na Vercel. Também melhorei minha habilidade de criar e gerenciar CRUDs no backend e frontend.

Trabalho com Ferramentas Modernas

Implementar Typescript no projeto, mesmo com a curva de aprendizado, trouxe muitos benefícios em termos de segurança e qualidade do código. Aprendi a importância das interfaces e tipos, o que me ajudou a escrever um código mais robusto e certamente será mais fácil de mantê-lo.

Gestão de Versionamento

Entender e implementar um fluxo de trabalho com Git foi um grande aprendizado. Agora, consigo criar branches para novas funcionalidades, corrigir bugs e resolver conflitos de código com mais eficiência, o que facilita o desenvolvimento contínuo e colaborativo.

Próximos Passos

Pretendo continuar aprimorando minhas habilidades técnicas, especialmente em áreas que ainda sinto dificuldade, a comunicação entre os componentes do React, a elaboração de testes, o versionamento de código. Além disso, quero explorar mais ferramentas e práticas como subir o banco de dados na nuvem.

Agradecimentos

Algumas pessoas foram fundamentais para esse processo, especificamente com tecnologia, por me ajudarem de N formas a aprender algo novo:

Lucas Viana
Leonardo Santos
Lucas Batista
Gabriel Sanzone

Não menos importantes, minha família, Leticia, por acreditarem em mim e no meu projeto de vida e tornarem a jornada mais fácil de seguir.

. .
Terabox Video Player