Meu primeiro app em produção
Tags: node, beginners
Published: 2020-05-16 17:12:06

Me alegra muito poder dizer que muitas pessoas fizeram parte desta conquista!

Há 1 mês estava refletindo sobre a atual situação em que estamos vivendo em meio a pandemia. Do relato de alguns parentes sobre o medo de ficar sem alimentos em casa, veio a concepção deste app.

A ideia inicial era simples, fazer com que vizinhos se ajudassem, cadastrando suas necessidades no app e dando “match” com o que outros vizinhos pudessem ajudar. Dessa maneira, haveria duas possibilidades no app, uma para cadastrar necessidades e outra para cadastrar ajudas. Isso tudo dando matches em um raio de 10km, para que ajuda não fosse inviável neste momento.

Para me ajudar nesse projeto, chamei um cara fera chamado Kennedy Batista, um grande amigo de faculdade. Dividimos o desenvolvimento, ficando eu com backend em Node.js, disponibilizando uma API RESTful, e o Kennedy com o frontend em ReactJS.

Durante uma semana inteira ficamos desenvolvendo esta idéia e nesta mesma semana fui verificar o feed no linkedin como de costume e me deparei com um post do Guilherme Farina, vulgo Farina, Creative Head UI/UX, com todo o esquema de UI e UX de uma aplicação muito parecida com a que vínhamos desenvolvendo. A idéia central era a mesma, fazer com que vizinhos se ajudassem. Fiquei impressionado, pois o design era maravilhoso. Era o que faltava para o nosso projeto!

Decidi chamar o Farina no linkedin para comentar sobre a idéia que estávamos desenvolvendo e a semelhança entre os projetos. O Farina logo se dispôs a  tocarmos o projeto juntos, dessa maneira ele forneceria todo design e idéia da aplicação e nós continuaríamos na parte do desenvolvimento.

Ao decorrer da segunda semana, o Farina chamou alguns amigos para auxiliar na criação do projeto, esses que foram essenciais e fizeram desta a aplicação a lindeza que ela é, e então nossa equipe foi de 3 a 9 pessoas rapidamente.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/lz4ix369y891tw9wz0lw.png)

<h1>Sobre o desenvolvimento backend</h1>

Devo dar aqui os créditos ao bootcamp maravilhoso da Rocketseat que eu participei e participo, o qual me deu toda capacidade técnica necessária para desenvolver este projeto. Foi somente após este treinamento que me senti preparado para encarar o desenvolvimento completo de uma aplicação em produção.

Após a finalização do módulo de Node.js no bootcamp, decidi que deveria reforçar esses aprendizados criando uma aplicação. Foi então que tudo casou com a ideia do Fica em Casa. Resolvi aplicar os conhecimentos nessa idéia.

No início o desenvolvimento foi muito rápido, pois muito das coisas que eu precisava eu já havia feito no bootcamp, dessa maneira usei trechos de códigos já criados no meu treinamento do bootcamp. Usei conceitos e patterns seguidos la. Questões como autenticação, login, cadastro de usuários, bases de dados, envio de emails, etc.

Aqui vale ressaltar um ponto muito importante que aprendi no bootcamp, construir uma aplicação não é decorar todo o código. Você não vai se lembrar de tudo que já “codou” e sair aplicando instantaneamente. O importante é você saber que já fez algo e saber onde procurar para reproduzir novamente!

Um dos grandes desafios dessa jornada foi o mongodb. Eu já havia trabalhando bastante com o mongo no bootcamp, porém aqui surgiram novas necessidades, e foi aí que tive que acessar a documentação do mongodb e estudar sobre geolocalização, funções de agregação, etc. Foram alguns dias estudando a documentação, resolvendo problemas e muito aprendizado.

Depois disso, tive que pesquisar sobre o armazenamento de imagens na Amazon S3, pois era a plataforma que tínhamos escolhido para carregar as imagens dos usuários. Novamente utilizei a Rocketseat haha. Tinham videos no youtube ensinando, e então foi tranquilo!

Após estes desafios veio outro mais interessante. Nossa forma de cadastro iria mudar. Inicialmente estávamos fazendo o cadastro dos nossos usuários via email, porém em uma de nossas videochamadas em grupo, chegamos ao consenso que a plataforma deveria ser de fácil utilização à todos os níveis de idade, mas que, provavelmente a maioria da terceira idade não teria email, ou esqueceria seu email. Resolvemos então possibilitar o cadastro com número telefone também, mas tínhamos que confirmar de alguma forma que aquele telefone era realmente do usuário. Aqui foi mais um bom aprendizado, trabalhar com envio de sms. Inicialmente queríamos utilizar o whatsapp para enviar o link de cadastro para nossos usuários, porém o Whatsapp exigia uma documentação e processo de aprovação que levaria de 3 a 4 semanas, então decidimos usar SMS.

Na busca por plataformas, escolhemos a Twilio pois o custo benefício era mais atrativo. Porém após contratar e utilizar os serviços, descobrimos que o envio para o Brasil era mais caro que nos EUA :(, o que nos pegou de surpresa.

Depois destes desafios veio a parte de deploy. Mas para nossa alegria, utilizamos o Heroku, que é uma “tetéia” ^^. Foi só configurar o repositório e fazer o deploy.

Enfim, foram muitos aprendizados nesta primeira aplicação. A maior delas foi: faça o planejamento necessário, casos de usos, requisitos, escopo e todo o processo necessário de planejamento, pois tivemos alguns retrabalhos devido a termos pulado um pouco essa etapa. Resumindo, faça o planejamento da sua aplicação !!!

Só tenho a agradecer aos meus amigos, familiares, e a essa equipe maravilhosa que fez parte deste projeto incrível.

Se quiser conhecer mais sobre nosso projeto acesse ficaemcasaapp.com.br.