Descrição
Um board onde qualquer pessoa acompanha o que um time está construindo, comenta um item e diz o que quer depois. A API vive no mesmo app, escrita com Hono e descrita por um esquema OpenAPI, e clicar numa issue abre um modal sem perder a lista atrás.
Funcionalidades
- Rotas interceptadas: a mesma URL é modal quando vem do board e página inteira quando vem de um link compartilhado
- API REST no mesmo deploy, escrita com Hono e zod-openapi, com referência gerada
- Busca e filtros moram na URL, então o resultado pode ser colado no chat
- Entrada pelo GitHub, ou como visitante quando não há aplicativo OAuth configurado
- Comentário e curtida passam pela API, e não por um caminho escondido só deles
Desafios
- Pré-renderizar a casca com os cache components do Next 16, o que exigiu aguardar os parâmetros da rota dentro do Suspense em vez de no topo da página
- Fazer uma variável pública chegar ao bundle do navegador, o que só funciona quando cada chave aparece escrita no código
- Impedir que o contador de curtidas e a tabela de curtidas discordem depois de uma requisição que falhou pela metade
Aprendizados
- Que uma rota que confia no próprio middleware ainda deve uma verificação ao sistema de tipos, e a verificação honesta é um 401, não um `!`
- Que a rota interceptada vale o arquivo a mais: manter a lista atrás do modal é a razão inteira de ninguém perder o lugar
- Que uma thread lida do mais novo para o mais velho coloca a resposta acima da pergunta