🤔E SE EU TE CONTAR COMO DESENVOLVI UMA SOLUÇÃO RECENTEMENTE NO “MEU” DORMITÓRIO USANDO Nodejs e Reactjs!

Há um ano pensei em resolver um problema no dormitório da universidade em que estudo (Rússia). Usando algumas das habilidades que fui adquirindo ao longo do tempo, felizmente tornou-se possível.

Como tudo começou?

No dormitório aonde estou alojado vive muitos estrangeiros e eu sou um deles. Mas durante os meus primeiros anos aqui no dormitório, eu enfrentei algumas dificuldades que não queria que os próximos/atuais estudantes estrangeiros passassem. Por esse motivo tive uma ideia e creio que é/será útil. Mas antes porém, deixa-me xplicar qual é/era o problema…

Problema:

Quando os estrangeiros chegam no dormitório (nos seus primeiros anos), sabendo que ainda não dominam o idioma, fica complicado para eles a comunicação, principalmente quando querem explicar algo para alguém. Normalmente nos dormitórios (cá na Rússia) existem Profissionais Técnicos (Eletricistas e Encanadores). Eles são responsáveis pela resolução de todos problemas técnicos que acontecem aqui no dormitório, mas isso funciona da seguinte maneira…

Ex:

Estudante está com problema na lâmpada do seu quarto. Ele deve fazer o seguinte:

  • Ir até os/as vigilantes do dormitório
  • Explicar o problema
  • Pedir o livro de apontamento de problemas
  • Escrever o problema em Russo no livro (explicar detalhadamente), colocando o andar em que está, o número do quarto e etc.
  • E esperar até o dia seguinte ou um outro dia em que o Técnico irá trabalhar, para que o problema seja resolvido.

RESOLUÇÃO DO PROBLEMA

Então eu tive a seguinte ideia:

E se eu criasse um App (Web), aonde os estudantes não precisassem fazer todo o processo acima citado.

Neste caso o App funcionará da seguinte maneira:

  • O estudante cria uma conta.
  • Após a criação da conta, ele terá a possibilidade de reportar o problema a partir do App, sem precisar passar por todo aquele processo, que chega a ser muito complicado para quem ainda não tem o domínio do idioma.

Por exemplo:

   Fazer fotos do local/material danificado (lâmpada, porta, tomada etc).
   Escrever detalhadamente sobre o problema (EM QUALQUER IDIOMA).
   Especificar o número do andar, do bloco e do quarto.

Após a reportagem do problema. Esses dados serão enviados ao Técnico, que por sua vez também terá uma conta.

E o Técnico poderá:

  • Receber estes problemas reportados, mas em RUSSO.
  • Poderá não precisar sair de casa para saber se foi registrado algum problema.
  • Caso for registrado algum problema, ele poderá analizar e estar preparado para resolvê-lo.
  • E após resolver o problema, marca como resolvido e o Estudante nota pelo Status do problema em sua conta (Problema Resolvido).

Uma visão geral das ferramentas e tecnologias que usei:

Backend

  • Node.js + Fastify

    Criei rotas para reportar, buscar, resolver e listar problemas reportados.

  • Drizzle ORM + PostgreSQL

    Gerenciei as Tabelas e resoluções dos problemas reportados com o Drizzle, que por sua vez também gerou as migrações.

  • Docker e NEON para Banco de Dados

    Usei o Docker localmente para criar e gerenciar instâncias PostgreSQL durante o desenvolvimento. O Neon por ser uma das muitas soluções PostgreSQL (com plano gratuito), optei para usar em produção.

Frontend

  • Reactjs

  • Clerk (para autenticação)

    Usei uma funcionalidade do Clerk que me permitiu criar restrições de usuários a partir do email, podendo assim dar acesso para Cadastro apenas aos estudantes do "meu" Dormitório.

  • Cloudinary

    Enviei para o Cloudinary as imagens reportadas pelos usuários, para me retornar URL públicas e salvar no Banco de Dados para serem exibidas no frontend.

  • Google Translate API

    Tal como descrevi acima, uma das principais funcionalidades seria o App suportar multiplos idiomas. Então optei por traduzir as descrições dos problemas para Russo ao serem exibidas na conta dos Técnicos.

Todas as ferramentas e serviços que usei têm planos gratuitos.

Fiz o deploy do Backend na Vercel e do Frontend na Netlify.

Apresentei o projeto a direção do Dormitório, foi aceite e está sendo utilizado atualmente.

É isso, software foi feito para resolver problemas reais de pessoas reais. Também sou muito fã de programas personalizados, mas aí vai uma dica, pode ser interessante o mesmo tipo de programa em condomínios de prédios com zeladores próprios ou empresas terceirizadas, se você conseguir fazer uma versão genérica pode apresentar seu programa para mais pessoas.

Exatamente `MarcoBarbosa`... Inclusive estava pensando mesmo nisso, mas de modo a apresentar a mais `Dormitórios` aqui na minha cidade. Porque há muitos e creio que lá os estudantes estrangeiros também enfrentam os mesmos problemas. > Valeu pela dica 🙏🏽

Sobre o progeto, muito bom. mas oque me deixou curioso foi como você foi parar ai na Russia?

Boa curiosidade `4rthur` 😅 Tive a oportunidade de vir para cá fazer a minha Faculdade em TI.

Muito interessante essa iniciativa, as vezes as melhores soluções criadas são aquelas que resolvem os nossos próprios problemas ksksks, as vezes gastamos horas pensando em problemas para resolver, porem se olhar com cuidado como é o nosso dia a dia, podemos identificar problemas e gerar soluções para elas, ja que temos o poder de criação de software.

Todo um problema resolvido com apenas um programa, genial.

Cara, sensacional a iniciativa! Aqui na minha faculdade (IFPB) eu estou pensando em fazer algo parecido para o gerenciamento de chaves da instituição, simplesmente até hoje é tudo feito no papel via assinatura, então acaba sendo muito complicado para poder ver o histórico de onde uma chave passou, ou até mesmo ver onde ela está atualmente, o seu projeto me deu umas ideias de como fazer e até uma inspiração, abraço.

Valeu `athavus`... Bota a mão na massa, só começa o projeto e depois verás que será difícil não terminar, não importa as dificuldade que irás encontrar (é normal), eu também encontrei muitas. Comecei a pensar nesse projeto faz tempo e várias vezes pensei que seria tão difíl ao ponto de não dar certo, até que realmente botei a mão na massa e cá está. 😊 > Então força ai mano, você vai conseguir

Para guardar as imagens usou algum serviço de bucket?

Para guardar as imagens, utilizei o [`Cloudinary`](https://cloudinary.com/)🔗, que não é exatamente um serviço de `bucket`, mas uma plataforma de gerenciamento de mídia...
Hmm, entendi, bacana! Você comentou que praticamente tudo que usou no projeto está em algum serviço gratuito, como pensa na precificação, levando em conta a escala quando o projeto sair do free tier, acha que vai ser muito caro pra manter?
Sim `joaomarcos70`, atualmente, todos os serviços usados no projeto estão no plano gratuito. Optei por esses serviços de uma maneira estratégica, principalmente para validar a ideia e apresentar a solução funcional sem custos iniciais. Sim, ultimamente tenho pensado no impacto financeiro caso o projeto escale. Tomara que até lá, o projeto tenha um inicio de rendimento 😇 Mas para: - o Backend (Fastify + Drizzle ORM + PostgreSQL via Neon) O Neon oferece um bom plano inicial, suficiente para quando o projeto escalar. Caso contrário irei optar por um outro serviço. - Para o Frontend... O Clerk é gratuito para até 10.000 usuários mensais ativos, o que cobre uma base significativa de usuários inicial. Se ultrapassar esse limite, o custo começa em 25$/mês. Esse valor penso que é razoável, considerando que o projeto esteja rendendo após ser aceite em outros dormitórios. - Quanto ao armazenamento das Imagens (na/o Cloudinary) No plano gratuito, o Cloudinary permite 25.000 transformações mensais e 25GB de armazenamento. Suficiente para imagens apenas, tendo em conta que coloquei uma limitação na quantidade de imagens que devem ser carregadas em cada formulário (`reportagem do problema`). Mas ainda assim, acho que caso o projeto escale além disso, os custos serão proporcionais ao uso adicional. Por ex. para projetos maiores, migrar para um serviço de `bucket` como o AWS S3 com um sistema customizado para compressão e transformação de imagens pode ser mais econômico também. - No caso das traduções (Google Translate API): O uso atual da API é gratuito, mas também dependendo do volume de traduções. No caso em que grandes volumes de texto ou milhões de solicitações forem feitas, de certeza que pode haver custos. Acho que a API da Google Translate cobra cerca de $20 por milhão de caracteres traduzidos (`preciso dar uma olhada para me certificar`). Mas caso for necessário, posso optar em usar outras opções de tradução automática. - Quanto a `Infra.` A Vercel, oferece bons planos gratuitos. Mas se houver aumento de tráfego e operações, os planos pagos da Vercel começam a partir de $20/mês para projetos pequenos e escalam conforme as necessidades. > E o resto serão questões as vezes inevitáveis (`Errar, aprender e não voltar a cometer`) 😊 > Mas caso tenhas algumas outras sugestões `joaomarcos70`, agradeceria muito se partilhasses.
E como pensa em gerenciar os planos, quem pagou, que não pagou, vai usar alguma coisa como Stripe?
Para gerenciar os planos, Stripe seria uma boa opção, mas não aqui (`Russia`), uma vez que `cartões visas/mastercards` aqui não funcionam para pagamentos. Então irei optar em um sistema de pagamento Russo mais usado cá ([SBP](https://sbp.nspk.ru/api/?utm_source=google.com&utm_medium=organic&utm_campaign=google.com&utm_referrer=google.com))🔗. > Mas esse será um grande desafio.

Achei bem interessante a ideia da tradução. Uma ideia seria verificar as traduções feitas por IA, ja que muitas vezes o google tradutor efetua uma tradução literaria, sem muita noção de contexto, a ideia é que usando algo como o GPT ou GEMINI, você consiga traduções mais proximas da realidade ou ate mesmo mais complexas.

Tenho pouca experiencia com uso de Api, mas sei dizer que ao longo do tempo eu tenho usado com mais frequencia o GPT para traduzir textos, pois ja me ocorreu problemas com as traduções 'brutas' do google tradutor.

Alguem sabe dizer se isso que eu disse faz sentido ou é apenas efeito placebo causado pelo enfeitamento que as IAs fazem nos textos?

😄 Faz sentido sim `Yamamaco`... É uma boa ideia 👌🏽 Sim, realmente o Google Tradutor as vezes tende a fazer traduções as vezes fora do contexto e já me deparei com situações do gênero também. 😇 Já fiz algum projeto usando a API da OpenAI, então já não será assim tão difícil fazer esta implementação. > Valeu pela dica 🙏🏽

A ideia é excelente! No entanto, pelas telas apresentadas, é possível perceber que algumas partes estão em russo, enquanto outras estão em inglês. Para uma experiência mais dinâmica e inclusiva, o ideal seria que o site identificasse automaticamente o idioma do usuário — seja ele um técnico de manutenção ou um estudante — e apresentasse todo o conteúdo na língua correspondente, sem misturar idiomas.

Este layout ai, é dos estudantes e a descrição aparece no idioma que foi escrito, neste caso este estudante escreveu em inglês... Mas quanto aos outras partes, sim faz sentido estarem em russo. Uma boa ideia `Patrique`, vou ver a possibilidade de adicionar esta funcionalidade. > Valeu pela sugestão 🙏🏽

Que ideia incrível! Vi há pouco um vídeo do Filipe falando do surgimento de um projeto com uma proposta semelhante ao Photoshop. Tudo começou com a resolução de um problema simples e pessoal, depois tudo expandiu e foi ganhando forma, até que ganhou o mercado por sua praticidade e gratuidade. Trata-se do Photopea.

Os conceitos chave do vídeo que mais me chamaram atenção foram, como denominou o Filipe, desenvolvimento Orgânico vs Impressão 3D.

Orgânico

O desenvolvimento orgânico faz alusão, por exemplo, aos processos de desenvolvimento de um ser humano. Tudo começa com uma célula que se agrupa com outra para cumprir um propósito e este ciclo se repete várias e várias vezes. A ideia é que desde a primeira célula já se tenha algo aproveitável.

Impressão 3D

O conceito que remete à impressão 3D faz alusão a algo que tem um modelo definido desde a sua concepção e que só tem proveito após o término de todos os processos, tornando-o custoso em cumprir o seu propósito.

Seu projeto me remete ao desenvolvimento orgânico, e já está produzindo bons frutos, você vai conseguir beneficiar muitos estudantes com essa iniciativa, desde os mais novos até os mais velhos. Parabéns pelo seu trabalho.

A propósito este é o vídeo do Filipe.

Valeu `carlosmms` 😊 Vi ainda hoje este vídeo. > E por mais incrível que pareça, uns 5min depois de ver o video, tive a idea de partilhar aqui sobre este projeto.