0
respostas

[Projeto] Armazem - Social Network & Manga Tracking

Queria compartilhar com vocês uma experiência que tive desenvolvendo um projeto totalmente autoral, no qual levei 1 mês e meio para completar tentando aplicar tudo o que eu aprendi nestes 8 meses de estudo, seja mergulhando na Alura ou navegando pela internet. Ao todo foram 22.886 linhas de código, ou seja, cerca de 400 linhas por dia, e já quero deixar claro um dos maiores problemas no desenvolvimento de software que observei construindo esta aplicação, é o tempo, ninguém programa 400 linhas de código por dia se realmente quer construir uma aplicação sólida e profissional, pois muita das vezes devemos passar horas pensando na melhor solução para resolver determinado problema, e que não nos gerará mais problemas no futuro:

Se os programadores, em média, escrevem menos de 50 linhas de código por dia, o que mais fazem no seu dia de trabalho?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Localmente a aplicação estava muito performática (porquê será? kk) e com pouquíssimos inconvenientes, mas hoje, colocando o código em produção encontrei o verdadeiro terror, trocentos bugs ocorrendo em um ambiente totalmente diferente da minha máquina, surgiram erros que sequer existiam em desenvolvimento, e assim busquei resolver ao decorrer do dia os mais sérios. Então aprendi na marra que ninguém consegue construir uma API com mais de 70 endpoints e desenvolver todo um frontend que consumirá esta API em um curto intervalo de tempo, estas coisas requerem tempo, quanto maior a complexidade e menor o intervalo de tempo, com certeza o que pagará por isto é a qualidade. Um destes erros foi que hospedei o backend na AWS em um de seus servidores nos Estados Unidos, o frontend da aplicação na Vercel sabe-se lá aonde e o banco de dados em São Paulo, com isto o tempo de resposta do servidor estava demorando pakas, toda vez que o cliente fazia uma requisição, os dados trafegavam do Brasil para Estados Unidos, dos Estados Unidos para São Paulo, de São Paulo para os Estados Unidos e dos Estados Unidos para o Brasil, esta é uma suposição que eu estou fazendo, já que eu não entendo muito sobre infraestrutura, achei que o lugar não influenciava muito, mas depois que escolhi hospedar o backend e o frontend na Vercel em um servidor em São Paulo (onde o banco de dados está hospedado), a performance melhorou drasticamente comparado como estava antes (ainda bem que estes serviços de Cloud Computing oferem a Free Tier para que possamos testar e colocar pequenos projetos no ar).

Então este é maior problema que surgiu na aplicação, estava querendo atualizar o que o usuário estava vendo na aplicação já com os dados do banco de dados, assim sempre acabava fazendo novas requisições para o backend e para que assim pudesse sincronizar com os dados mais recentes do banco de dados, isto gerou um problema de performance que só percebi em produção, e claro existem maneiras de contornar tal problema, como apenas mandar os dados para o backend e atualizar a interface pelo estado da aplicação, utilizando os próprios dados da aplicação, sem precisar requisitar novamente para o backend, mas infelizmente só percebi o problema e a real necessidade disto em produção, e já deixo o alerta para vocês.

Sobre o projeto em si... tem como objetivo principal fazer com que leitores de mangás possam acompanhar sua lista de leitura, mangás que estão lendo, o capítulo que estão, se já leram ou se planejam ler, adicionar outros usuários, fazer posts, assim como curtir, comentar e compartilhar os mesmos.

Basicamente o fluxo é este, criar uma conta, poder acompanhar seus mangás e interagir com outros usuários. O projeto foi inspirado no site MyAnimeList, e realmente... não tem como replicar um website que está há 15 anos no mercado e que vale pelo menos um milhão de dólares em um mês e meio, mas consegui deixar o site bem funcional focando nas funcionalidades primordiais:

Código e projeto, vale conferir a versão mobile e desktop (não fiz a responsividade para tablets):

Obs.: não está tão ilegível pois refatorei o código na última semana