Pré-lançamento: checklist de produto, UX mobile e deep-dive na sync offline
Checklist de lançamento de produto, diretriz de formulários acessíveis com react-aria + shadcn, teste em dispositivo físico, comparação de codebase antes/depois do refactor, e deploy do frontend na Vercel.
O foco do dia mudou de código para produto: o que falta para lançar, como está a experiência no celular, e se a arquitetura aguenta. 17 sessões, 8 commits únicos, 10 workspaces no projeto cliente (NDA).
Projeto cliente (NDA)
Checklist de lançamento
Criei um checklist formal de pré-lançamento: nome do produto (o atual já existe, explorei alternativas), logotipo, domínio para o frontend, requisitos mínimos de LGPD, e backlog de segurança e performance no backend. Removi o ponteiro de APK, porque o app é 100% navegador (PWA). A conclusão principal: antes de lançar, o formulário de "Novo Relatório" precisa de uma UX mobile-first bem polida.
UX mobile e formulários acessíveis
Esse foi o tema mais intenso. Estudei a interface de outro projeto meu (um formulário de inscrição com comportamento exemplar no celular: input sobe, teclado foca, espaço confortável para digitar) e preparei um prompt para replicar no projeto cliente.
Criei uma diretriz de formulários acessíveis combinando react-aria-components com shadcn/ui.
A ideia: usar react-aria para acessibilidade (labels, errors, focus management) e shadcn para visual, sem conflito.
Organizei as tarefas separando frontend e backend, e comecei a aplicar a diretriz no componente NovoRelatorio.
Testei no dispositivo físico na rede local. O primeiro acesso não conectava (nem no Mac nem no celular). Tentei ngrok, mas no final resolveu sem ele. Encontrei um bug: "Novo Relatório" via dashboard não carregava a lista de proprietários. Pelo menu funcionava.
Comparação de codebase (antes e depois)
Clonar o repositório em dois hashes distintos (antes do refactor massivo dos dois dias anteriores e depois) e gerar um relatório HTML com a comparação.
O relatório cobre arquitetura, performance, segurança, qualidade de código, complexidade, e oportunidades futuras.
Também fiz um deep-dive no fluxo offline: main.tsx → App.tsx, service worker, Dexie como fila local, uuid_cliente como chave de idempotência para a sync (notei que o nome deveria ser mais descritivo, tipo idempotent_key).
Deploy do frontend
O frontend foi para a Vercel. Investiguei se os relatórios no banco vieram do seed ou de dados em cache sincronizados quando abri o app. Eram do cache.
tgmarinho-ai-website
Comecei um blog post sobre connection pooling de banco de dados, usando a documentação do PostgreSQL JDBC como ponto de partida.
Um dia onde a pergunta central foi "o que falta para lançar?", e a resposta veio de testar no celular real, documentar o gap, e montar o plano para fechar.