Pular para o conteúdo
ANUAGRO

Um anuário impresso que virou jornal diário.

Era uma revista por ano. Virou notícia todo dia, com o anuário dentro — e a redação publica sozinha, sem abrir chamado com ninguém. O site não tem um único pacote de terceiro para quebrar, atualizar ou vencer, e publicar uma matéria não tira o jornal do ar por um instante sequer.

Cliente
ANUAGRO
Contexto
Jornalismo do agro · Campos Gerais e Norte Pioneiro, PR
Período
2026
O que fizemos
Produto · Design · Desenvolvimento · Arquitetura editorial · Infraestrutura · Sustentação
anuagro.com.br
anuagro.com.br
Home do ANUAGRO: faixa de últimas notícias, marca, menu de editorias e a matéria de abertura

A home: faixa de últimas, abertura e a coluna de destaques.

anuagro.com.br/noticias/…
Página de matéria do ANUAGRO, com trilha de navegação, selo de edição, editoria, série e título em serifada

A matéria, com a trilha que mostra onde ela mora na arquitetura.

001

A obra

Uma publicação anual que precisava funcionar o ano inteiro.

  • Portal diárionotícias, editorias, municípios, organizações, pessoas e eventos
  • Anuário digitalas edições impressas, lidas no navegador
  • Painel da redaçãoescrita, revisão, publicação, mídia e usuários
  • Publicidadecinco formatos, agendamento, rotação e segmentação
  • Agro é Escolaminiportal próprio do projeto educacional, dentro do site

O ANUAGRO nasceu impresso: um anuário do agronegócio dos Campos Gerais e do Norte Pioneiro. O site não podia ser a vitrine da revista — precisava ser um portal de notícias atualizado todo dia, com o anuário dentro dele, e não o contrário.

Quem lê é produtor rural, cooperado, técnico, agrônomo, professor e poder público. Gente que vem entender alguma coisa, não decidir uma compra. Isso define o desenho inteiro: leitura confortável e prolongada importa mais que conversão rápida, e a tipografia serifada no corpo do texto não é escolha estética, é consequência.

O cliente foi explícito sobre o que o portal não podia parecer: nada de rural rústico, nada de estética de fazenda caricata, nada de empresa de insumos, e principalmente nada de painel de software. A referência combinada foi grande publicação editorial contemporânea — e é por isso que a página de matéria se parece mais com uma revista que com um blog.

002

Nada para quebrar

O site não depende de um único pacote de terceiro.

0

dependências de runtime. Nenhum pacote de terceiro é baixado, auditado ou atualizado para o site funcionar — e nenhuma requisição sai para CDN de terceiro quando alguém lê uma matéria.

O gerador é um programa em Node, escrito à mão. Não há React, não há empacotador, não há etapa de compilação de terceiro — e não há `npm install`, porque não há o que instalar. O projeto roda com o que vem na linguagem.

Isso não é purismo. É a escolha que faz 269 páginas saírem em menos de um segundo, que elimina a classe inteira de problema de atualização de dependência num site que precisa durar anos, e que deixa o servidor servindo HTML estático — sem processo de aplicação no caminho entre o leitor e a página.

O painel é o único lugar com estado, e roda separado: um processo Node com banco SQLite, na biblioteca nativa `node:sqlite`. O site publicado não passa por ele. Se o painel cair às três da manhã, o portal continua no ar, porque o que está no ar é arquivo.

Entre os dois existe um JSON de propósito. O painel exporta o banco para `conteudo.json`, e o gerador lê o JSON — nunca o banco. É o que mantém o gerador síncrono e o que permite que a pasta do gerador não conheça banco de dados nenhum.

Capturas do site em produção, feitas em 28 de outubro de 2026.

003

Publicar sem sair do ar

O build começa apagando o destino. Esse era o problema.

Gerar o site direto na pasta publicada deixaria o portal fora do ar por cerca de um segundo a cada publicação. Um segundo em que toda URL responde 404 — inclusive para o robô do buscador que passasse justo ali, e que registraria o site inteiro como quebrado.

A solução é publicar noutra pasta e trocar os nomes no fim. O build vai para `dist-novo/`, e só quando termina as pastas trocam de lugar. Medido no Windows: 1 falha em cerca de 290 requisições durante a troca, contra as ~290 que a abordagem direta produziria. No Linux a renomeação é atômica e quem estava lendo termina de ler o arquivo antigo, então a janela de falha não existe.

E build que falha não toca na pasta publicada. O site continua no ar com a versão anterior — que é exatamente o que se quer quando alguma coisa deu errada no meio de uma publicação.

Cada publicação grava duração, número de páginas e registro de quem publicou. A redação vê o histórico, e não só o resultado.

A troca, medida
AbordagemFalhas durante a publicação
Gerar direto na pasta publicada~290 requisições em 404
Gerar ao lado e trocar os nomes (Windows)1 em ~290
Gerar ao lado e trocar os nomes (Linux)nenhuma: a renomeação é atômica
004

Arquitetura editorial

Uma matéria, muitas casas, nenhuma duplicata.

A estrutura não é uma lista plana de categorias. Uma matéria tem editoria, subeditoria (a cadeia produtiva), município, região, tags, organizações citadas, pessoas, série e evento. Ela aparece automaticamente em todas as listagens correspondentes — e em nenhuma delas é uma cópia.

Na prática: uma reportagem sobre a colheita em Castro aparece na editoria Produção, na subeditoria Cereais, na página do município de Castro, na da região, na da cooperativa citada, na do repórter que assina, e na série da Edição 2024. Sete lugares, um texto.

É por isso que o portal tem 256 endereços publicados com um volume de matérias muito menor: cada eixo da arquitetura gera as suas próprias páginas, e cada uma dessas páginas é um caminho de entrada diferente pelo buscador.

A trilha de navegação no alto da matéria mostra essa estrutura em vez de escondê-la — Início, editoria, subeditoria, título. Quem chegou por busca entende, em uma linha, onde está.

Capturas do site em produção, feitas em 28 de outubro de 2026.

005

Mídia e vídeo

A imagem é reduzida no navegador, e o YouTube só entra se alguém clicar.

A foto é redimensionada no navegador de quem envia, não no servidor: sobe já em 2000px, com versões de 800 e 1600 que viram o `srcset`. Evita binário nativo de processamento de imagem no servidor e poupa a banda de subida da redação, que muitas vezes está numa conexão do interior.

Vídeo tem duas naturezas e dois tratamentos. Clipe curto, de até trinta segundos e sem áudio, fica hospedado no próprio servidor e toca em laço, mudo, na abertura da matéria. Reportagem longa fica no canal do YouTube.

E o bloco do YouTube não emite o elemento de incorporação no HTML. A página sai com pôster e botão; o player só é inserido quando o leitor clica. Para quem não tocar o vídeo, nenhuma requisição sai para domínio de terceiro — que é o que mantém verdadeira a promessa de não ter dependência de terceiro em tempo de execução, e o que mantém o consentimento sendo consentimento de verdade.

Capturas do site em produção, feitas em 28 de outubro de 2026.

006

Publicidade

A peça é sorteada no navegador, não assada no HTML.

São cinco formatos, com agendamento por período, peso para rotação e segmentação por editoria, município ou cadeia produtiva. Conteúdo patrocinado é sempre identificado, sem disfarce de matéria.

A entrega acontece no navegador: um JSON leva as campanhas elegíveis e um script sorteia uma por espaço. Assar a peça dentro do HTML mataria a rotação e o agendamento — campanha marcada para amanhã só entraria com uma republicação do site inteiro, e dois anunciantes no mesmo espaço virariam um anunciante só.

É a única parte do site que decide alguma coisa no navegador, e ela existe porque a alternativa era pior.

007

O painel da redação

Três papéis, e duas travas contra ficar sem acesso.

Redator cria e edita as próprias matérias e manda para revisão, mas não publica. Editor edita qualquer matéria, publica e arquiva. Admin faz tudo, mais usuários e configurações.

A senha do primeiro administrador é mostrada uma única vez, no povoamento do banco; só o hash fica guardado. Trocar a senha encerra as sessões abertas, e conta desativada perde o acesso na hora.

Duas travas impedem o pior cenário de um painel: ninguém desativa nem rebaixa a própria conta, e o último administrador ativo não pode cair. Sem isso, um clique distraído tranca a redação inteira para fora do próprio site.

E conta não é apagada, é desativada. Apagar deixaria matéria sem autoria e o histórico de publicação sem nome — o jornal perderia a própria memória para limpar uma linha do banco.

Quem pode o quê
PapelO que alcança
Redatorcria e edita as próprias matérias, envia para revisão, não publica
Editoredita qualquer matéria, publica e arquiva
Admintudo, mais usuários e configurações
008

Agro é Escola

Um miniportal com marca própria, dentro do portal.

O Agro é Escola aproxima estudantes da educação básica do agronegócio da própria região: conteúdo, visitas técnicas e material pedagógico para escolas dos Campos Gerais e do Norte Pioneiro, com o concurso cultural Semeaduras no fim.

Ele tem identidade própria — outra marca, outra cor, outro ritmo — e mesmo assim mora dentro do ANUAGRO, com navegação própria para projeto, notícias, municípios, escolas, professores, projetos pedagógicos, Semeaduras e galeria.

A decisão de produto é que um projeto educacional precisa falar com escola, e escola não fala a mesma língua do caderno de economia. A arquitetura editorial do portal já suportava isso: o miniportal é um eixo a mais, não um site paralelo para manter.

Capturas do site em produção, feitas em 28 de outubro de 2026.

No celular

009

Detalhes

Onde a arquitetura editorial aparece.

010

Stack

O que existe, e o que deliberadamente não existe.

Seu sistema pode ser o próximo.

Conte o que a sua operação precisa resolver. A gente volta com o caminho — e com o que dá para colocar no ar primeiro.