UUIDv7 em toda parte, migração de Mongo para Postgres e Lighthouse CI
Fechei UUIDv7 para um schema cliente e igualei o Postgres local ao de prod, migrei um produto de eventos de MongoDB para PostgreSQL, e adicionei Lighthouse CI e tooling de performance a um site cliente.
O dia mais cheio do período, e quase tudo girou em torno de um tema: deixar a camada de banco honesta.
Projeto cliente (NDA)
Revisei um PR de schema e cortei toda referência a código externo de cidade, chegando em tabelas estado e municipio limpas, com chave UUIDv7.
Essas tabelas são dados de referência somente leitura, então nada de CRUD no app, talvez um campo ativo mais tarde se algo mudar.
Isso levantou uma pergunta concreta: o Drizzle suporta UUIDv7, e como faço meu Postgres local no Docker gerar isso?
A resposta foi usar exatamente a mesma imagem de Postgres que roda em produção (18.4), para que local e prod se comportem igual em vez de divergirem.
Também consolidei os docs de produto, coloquei diagramas mermaid e uma spec de papéis e permissões, e trabalhei a modelagem mais difícil: um piloto por atividade, técnicos e apoio, planos de atividade com datas próprias de execução, e o caso espinhoso de transferência de propriedade sem arrastar o histórico de relatórios de uma fazenda para o novo dono.
iTOP
Rodei uma migração completa de MongoDB para PostgreSQL no produto de inscrição de eventos. Isso significou converter o schema Prisma, trocar Mongo por Postgres 18.4 no Docker, corrigir deletes de foreign key e o tratamento de nulos em JSON, mover a suíte de testes e o CI para Postgres real, e também fechar UUIDv7 aqui. O plano foi deliberado: montar a estrutura nova localmente com dados fake gerados e testar de ponta a ponta primeiro, e migrar os dados reais numa etapa posterior.
CSM
Num site cliente, adicionei Lighthouse CI junto de checagens de HTML e links e otimização de imagem com Sharp, para que qualidade deixe de ser conferência manual.
Também tirei o Google Analytics do head, para que ele carregue após interação ou um pequeno atraso, protegendo a renderização inicial.
tgmarinho-ai-website
Publiquei um post de UUIDv4 vs UUIDv7, que foi o registro natural da decisão de schema do dia.
Também rascunhei um sobre implementar JWT na mão versus usar um serviço, e comecei um sobre armazenar dinheiro no banco (por que Decimal, códigos de moeda ISO-4217, e por que não float).
O fio que atravessa tudo: escolha o primitivo que envelhece bem, e faça todos os ambientes concordarem com ele.