O desenvolvimento de software moderno exige muito mais do que apenas escrever linhas de código que funcionam localmente; exige a construção de soluções escaláveis que conectem negócios e clientes de forma fluida e segura. Foi exatamente com essa visão de engenharia e produto que nasceu o ecossistema Juju Docinhus.
O que começou como um projeto de extensão universitária rapidamente evoluiu para uma plataforma completa de cardápio digital e gestão operacional. No meu caso, o desafio foi transformar a teoria da sala de aula em uma infraestrutura que não quebrasse no primeiro acesso real.
O Problema e a Visão do Produto
O objetivo do projeto era claro desde o dia zero: modernizar e automatizar a experiência de compra de uma doceria. O setor de varejo de alimentos muitas vezes sofre com pedidos descentralizados (WhatsApp, anotações de papel) e gestão confusa. A solução precisava unir dois mundos:
- Painel administrativo robusto (Dashboard): para os lojistas gerenciarem produtos, categorias e pedidos em tempo real.
- Interface de consumo (App Web): rápida, imersiva e altamente intuitiva para os clientes finais, acessível de qualquer dispositivo sem a necessidade de downloads.
Arquitetura e Decisões Técnicas (A Stack)
Para garantir a escalabilidade futura e manter um padrão rigoroso de Clean Code, a arquitetura do projeto foi pensada de forma desacoplada, dividindo o sistema em micro-serviços e utilizando uma stack moderna:
- Backend: Construído com
PythoneFastAPI. A escolha doFastAPInão foi acidental; ele garante performance assíncrona por padrão, tipagem rigorosa comPydantice documentação automática viaSwagger. - Frontend Web: Desenvolvido em
React. O foco aqui foi entregar um dashboard administrativo ágil, utilizando componentização profunda para garantir fácil manutenção. - Frontend Mobile/App: Uma interface dedicada, construída com
Flutter/React, otimizada milimetricamente para a experiência do usuário (UX) em telas de celular.
"A verdadeira engenharia de software começa quando o servidor cai, a conexão é recusada ou o usuário não consegue clicar no botão."
Desafios de Engenharia no Mundo Real
Levar um projeto do conforto do localhost para o ambiente hostil e imprevisível da nuvem sempre traz lições valiosas. Durante o ciclo de desenvolvimento da Juju Docinhus, enfrentei e superei gargalos de infraestrutura que não aparecem em tutoriais básicos.
1. Orquestração de Deploy e CI/CD
A transição para a nuvem exigiu a configuração de pipelines de Continuous Deployment (CD) na Vercel para o frontend e no Render para o backend. Tive que gerenciar rigorosamente a injeção de variáveis de ambiente, como chaves de API e URLs dinâmicas, garantindo que o código de produção fosse seguro e isolado do ambiente de desenvolvimento.
2. O Fantasma do CORS e Autenticação
Sistemas desacoplados sofrem com políticas rigorosas de segurança dos navegadores. Configurei as regras de CORS (Cross-Origin Resource Sharing) para permitir que a Vercel falasse com a API no Render de forma segura. Além disso, implementei a autorização via Firebase Authentication, configurando whitelists de domínios personalizados como jujudocinhus.thiagosiena.com.
3. Resiliência de Banco de Dados (Evitando o Cold Start)
Hospedar bancos de dados na nuvem significa lidar com conexões ociosas que são derrubadas pelos provedores para economizar recursos. Para evitar que a API falhasse ao tentar acessar uma conexão "morta", implementei estratégias de pool avançadas no SQLAlchemy, utilizando pool_pre_ping e reciclagem de conexões.
4. UI/UX: A Mágica dos Detalhes
A experiência do usuário precisava ser imersiva. Fiz adaptações na web para simular o comportamento nativo do mobile. Substituí cursores padrão por interações temáticas e alterei o ScrollBehavior da aplicação para permitir que usuários de PC pudessem "clicar e arrastar" as listas, replicando a sensação de toque de um smartphone.
Conheça o Ecossistema em Produção
Acredito que o conhecimento deve ser compartilhado. Por isso, todo o código-fonte foi mantido como open-source e as aplicações já estão em produção. Convido você a explorar a arquitetura e a interface final do projeto através dos links abaixo:
- Acesso para Clientes: Aplicativo Juju Docinhus.
- Acesso Administrativo: Plataforma Web.
- Código Fonte (App): GitHub (App).
- Código Fonte (Web): GitHub (Web).
Evoluir a arquitetura é um processo contínuo. Seguimos otimizando para entregar a melhor experiência.
O próximo passo agora é refinar a latência das chamadas assíncronas no Render, que ainda me incomoda um pouco em horários de pico. Como você tem lidado com o cold start em serviços gratuitos de hospedagem?