Quando a base de conteúdo cresce, o problema deixa de ser "como renderizar" e passa a ser "como manter e evoluir sem dor". Estes são padrões que têm funcionado bem em Next.js.
Convenções de pastas e nomes
Convenções de pastas e nomes
- src/content/posts/.md — um arquivo por post.
- O nome do arquivo igual ao slug (ex.: supabase-next-auth.md).
- Pastas para coleções não são necessárias no começo; adicione quando surgir categoria real (ex.: src/content/posts/ai/.md).
#Slugs estáveis
- Slug é parte do contrato público: evite renomear.
- Se renomear, mantenha um mapa de redirects 301 (ex.: next.config ou middleware).
- Evite datas no slug; deixe a data apenas no frontmatter.
## Frontmatter mínimo e validado
- Campos: title, slug, date, description, tags, author, draft, coverImage, excerpt.
- Valide no build — falhe rápido quando faltar algo crítico.
## Índice e listagens
- Gere um índice a partir dos metadados carregados (sem renderizar conteúdo inteiro).
- Ordene por date desc e filtre draft: false.
- Permita filtros por tags, mas sem complexidade desnecessária (query string simples).
## Paginação
- Use paginação baseada em página (/blog?page=2) para SEO previsível.
- Tamanho de página estável (ex.: 10 posts) e links canônicos.
- Links de "Próximo/Anterior" com rel apropriado.
## Busca e relacionamentos
- Busca inicial por título/description/tags no cliente (fuse.js) é suficiente para MVP.
- Relacione posts por tags compartilhadas; exiba 3-5 relacionados ao final do post.
## Build e performance
- Evite carregar conteúdo completo de todos os posts nas listagens; use apenas metadados.
- Prefira gerar rotas dinâmicas por slug (com cache) e revalidate onde couber.
## Conclusão
Com convenções simples — nomes de arquivos = slug, frontmatter validado, index e paginação previsíveis — seu blog escala sem virar um labirinto. Mantenha o contrato firme e a evolução do conteúdo será tranquila.
- Slug é parte do contrato público: evite renomear.
- Se renomear, mantenha um mapa de redirects 301 (ex.:
next.config ou middleware).- Evite datas no slug; deixe a data apenas no frontmatter.
## Frontmatter mínimo e validado
- Campos:
title, slug, date, description, tags, author, draft, coverImage, excerpt.- Valide no build — falhe rápido quando faltar algo crítico.
## Índice e listagens
- Gere um índice a partir dos metadados carregados (sem renderizar conteúdo inteiro).
- Ordene por
date desc e filtre draft: false.- Permita filtros por
tags, mas sem complexidade desnecessária (query string simples).## Paginação
- Use paginação baseada em página (
/blog?page=2) para SEO previsível.- Tamanho de página estável (ex.: 10 posts) e links canônicos.
- Links de "Próximo/Anterior" com rel apropriado.
## Busca e relacionamentos
- Busca inicial por título/description/tags no cliente (fuse.js) é suficiente para MVP.
- Relacione posts por tags compartilhadas; exiba 3-5 relacionados ao final do post.
## Build e performance
- Evite carregar conteúdo completo de todos os posts nas listagens; use apenas metadados.
- Prefira gerar rotas dinâmicas por slug (com cache) e revalidate onde couber.
## Conclusão
Com convenções simples — nomes de arquivos = slug, frontmatter validado, index e paginação previsíveis — seu blog escala sem virar um labirinto. Mantenha o contrato firme e a evolução do conteúdo será tranquila.