TG

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.tsxApp.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.