Stack técnico
A engenharia por trás do upnetix.com.br — servidor, cache, segurança, blog editorial e automações de IA — explicada em linguagem simples.
Arquitetura geral
Como as peças se encaixam, do navegador do cliente até o banco de dados.
O site roda em um único servidor Linux (Ubuntu) atrás do Nginx, que entrega o conteúdo já comprimido e em cache. O PHP 8.1 processa o WordPress; o MySQL 8 guarda os dados; o Redis acelera tudo mantendo respostas prontas na memória.
Servidor web — Nginx
O “porteiro” que recebe cada visita e decide o caminho mais rápido.
| Item | Detalhe |
|---|---|
| Servidor | nginx 1.18 (Ubuntu) |
| Funções | proxy reverso, cache de página em disco, rate limiting, HTTP/2, TLS |
| Compressão | Brotli (módulo dinâmico) + gzip de fallback |
Runtime — PHP-FPM
A “cozinha” que monta cada página sob demanda.
Process manager PHP 8.1-FPM, com OPcache e limites ajustados para WordPress + Elementor. Código próprio concentrado em mu-plugins (carregados sempre, sem interface).
CMS — WordPress + Blocksy
A base de conteúdo e o tema que dá a cara do site.
| Item | Detalhe |
|---|---|
| Core | WordPress 7.0 (pt_BR) |
| Tema | Blocksy |
| Construtor | Elementor (páginas institucionais) |
| Blog | renderização própria (mu-plugin), sem page builder |
Banco de dados — MySQL
Onde vivem posts, leads, assinantes e configurações.
MySQL 8.0. Além das tabelas do WordPress, o projeto adiciona tabelas próprias para a newsletter (assinantes e log de envios).
Cache e performance — Redis + W3TC
O que faz o site responder em milissegundos no acesso repetido.
| Camada | Função |
|---|---|
| Redis (object cache) | resultados de banco e fragmentos reutilizáveis |
| Redis (page cache) | páginas inteiras prontas |
| W3TC | orquestra minificação, cache de página em disco e Redis |
No acesso em cache quente, o tempo até o primeiro byte (TTFB) cai cerca de 85% frente ao acesso frio.
Compressão — Brotli
Menos bytes na rede, página abrindo mais rápido.
O HTML servido com Brotli fica cerca de 34% menor que com gzip, reduzindo o tempo de download — especialmente em conexões móveis.
Código próprio — mu-plugins
As “peças sob medida” que o projeto ganhou, além do WordPress padrão.
| Módulo | O que faz |
|---|---|
upnetix-lp-forms | captação de leads — endpoint REST, anti-bot (honeypot + time-trap + token JS), e-mail duplo, log .jsonl |
upnetix-seo-meta | meta description, Open Graph, Twitter Cards e canonical por página |
upnetix-seo-schema | JSON-LD: Organization, WebSite, WebPage, BreadcrumbList e Article |
upnetix-performance | enfileiramento seletivo de fontes, ícones, preconnect e ajustes de carga |
performance-optimizations | remoção de scripts desnecessários e heartbeat control no painel |
upnetix-blog-b2b | hero, grade, imagens (hero + inline WebP), compartilhamento e CTA do blog editorial |
upnetix-blog-analytics | rastreamento de tempo de leitura e engajamento por artigo |
upnetix-newsletter | envio drip de artigos por e-mail — 2×/semana, terça e sexta, 08h (Manaus) |
upnetix-newsletter-dashboard | painel de estatísticas da newsletter (aberturas, cliques, descadastros) |
upnetix-conectamais-condominios | página de produto Conecta+ Condomínios — vitrine, argumentos, CTA e galeria |
upnetix-cookie-consent | banner LGPD com aceite por categoria e registro de consentimento |
upnetix-portal | portal do cliente — acesso a faturas, suporte e dados da conta |
upnetix-search | busca personalizada com relevância editorial (blog + páginas) |
upnetix-stack-page | esta página de documentação técnica |
Captação de leads
Como um formulário vira um contato comercial qualificado.
Endpoint REST próprio com proteção anti-bot (honeypots, time-trap, rate limit e token de JS). Cada envio dispara dois e-mails — um para a equipe Upnetix e uma confirmação para o cliente — e é arquivado em formato .jsonl por mês.
Blog editorial B2B
Conteúdo que educa o mercado e leva ao contato comercial.
64 artigos em padrão editorial premium — sem invenção, sem viés, fontes verificáveis em cada publicação. Temáticas: conectividade B2B, redes multi-site, cloud, continuidade de serviços, Wi-Fi corporativo, segurança e IA para negócios.
Cada artigo é estruturado como funil: o leitor entra por uma dor real, avança por insights verificados e chega ao CTA (WhatsApp + formulário) como consequência natural da leitura. Quebras de objeção são inseridas como argumentos técnicos, não como defesa.
| Elemento | Especificação |
|---|---|
| Imagem hero | gerada por IA (gpt-image-1.5) · 1200×600px · WebP quality=85 · 37–150KB |
| Thumbnail | recorte da hero · 300×200px · WebP quality=85 · 5–30KB |
| Imagens inline | 3–5 por artigo · 900×500px · WebP · fill+crop sem distorção · comparativos, infográficos ou contexto corporativo |
| CTA | WhatsApp direto + formulário embutido (lead capturado em JSON + e-mail duplo) |
| Fontes | allow-list curado (ANATEL, Gartner, IDC, CNBC, G1 Economia…) — validadas antes de publicar |
Imagens geradas por IA
Por que todo artigo tem imagens únicas, sem banco de fotos genéricas.
O pipeline de imagens parte da API OpenAI (gpt-image-1.5), que gera imagens em resolução 1536×1024px (paisagem nativa). O resultado é convertido para WebP quality=85 — nunca JPEG ou PNG — usando o seguinte fluxo:
| Etapa | Detalhe |
|---|---|
| Geração | gpt-image-1.5 · 1536×1024px · quality=high · resposta b64_json |
| Decode | base64 → PNG temporário no servidor |
| Resize hero | ImageMagick -resize 1200x600^ -gravity Center -extent 1200x600 (fill+crop, sem distorção) |
| Resize inline | ImageMagick -resize 900x500^ -gravity Center -extent 900x500 |
| Conversão | convert … -quality 85 arquivo.webp |
| Upload | WP-CLI wp media import + wp post meta set _thumbnail_id |
Fallback sem API: ImageMagick com banco interno de imagens (zero custo). Imagens com texto: obrigatoriamente em PT-BR, sem erros de grafia.
Sistema de fontes/referências
Como garantimos que cada dado citado tem origem real.
Uma lista curada de fontes oficiais (allow-list) é cruzada com o conteúdo: cada estatística é mapeada para a URL canônica e validada contra a lista antes de virar link — evitando referências inventadas. A URL aparece encurtada, para dar credibilidade.
SEO técnico
O que ajuda o Google a entender e exibir bem cada página.
- meta description (própria por página)
- Open Graph e Twitter Cards
- JSON-LD: Organization, WebSite, WebPage e Breadcrumb
- canonical e robots avançado
Banners de compartilhamento
A imagem que aparece ao colar o link no WhatsApp/Facebook.
Banners únicos por produto, gerados com GD (Plus Jakarta Sans, supersampling 2× e quebra automática de texto), para um compartilhamento sempre caprichado.
Newsletter B2B (broadcast)
Como os artigos chegam por e-mail aos clientes, no ritmo certo.
| Item | Regra |
|---|---|
| Frequência | 2× por semana, de segunda a sexta — janela de disparo em lote |
| Modelo | broadcast: um mesmo artigo para toda a base, do mais recente para o mais antigo; ao publicar um artigo novo, ele entra na frente da fila |
| Assinantes | leads dos formulários + base de clientes B2B |
| Boas-vindas | e-mail de boas-vindas no cadastro (sem fragmentar o broadcast) |
| Entregabilidade | rampa de warm-up, cap diário, throttle, prioridade a domínios corporativos antes dos populares, List-Unsubscribe 1 clique |
| Registro | log de envio por destinatário (enviado/falha), índice único por (e-mail, artigo) anti-reenvio |
Segurança
As camadas que protegem o site e os dados.
- acesso ao painel protegido por camada adicional
- anti-bot nos formulários e bloqueio de abuso por IP
- TLS/HTTPS em todo o site
- e-mail transacional autenticado por SMTP
Infraestrutura e continuidade
O que mantém tudo no ar, inclusive depois de um reboot.
Serviços essenciais habilitados para iniciar com o sistema, rotina de backups e monitoramento de processos. Tarefas agendadas (cron) cuidam de sincronizações e do envio da newsletter.
Identidade visual
A linguagem de design que dá unidade ao site.
| Elemento | Valor |
|---|---|
| Navy | #0d1a5c |
| Azul | #2055c7 |
| Ciano | #00a8d4 |
| Tipografia | Sora (títulos), Lexend (rótulos), Source Sans 3 (texto) |
Integrações
Os serviços externos que conversam com o site.
| Serviço | Uso |
|---|---|
OpenAI API (gpt-image-1.5) | geração de imagens hero e inline para cada artigo do blog |
OpenAI API (gpt-4.1) | redação e revisão do conteúdo editorial B2B |
| SMTP autenticado | entrega de e-mail transacional (leads + newsletter + alertas) |
| IX.br Manaus | peering regional — latência reduzida para clientes do Norte |
| Google Fonts | Sora, Lexend, Source Sans 3, JetBrains Mono (enfileiradas seletivamente) |
Construtores e automações
Scripts que operam o blog sem intervenção manual.
Localizados em /usr/local/share/upnetix-builders/blog/, os scripts automatizam o ciclo completo de publicação:
| Script | O que faz |
|---|---|
add-inline-images.py | gera 3–5 imagens WebP por artigo via OpenAI API, converte com ImageMagick (sem distorção), faz upload via WP-CLI e insere no conteúdo · suporta --all, --skip-existing e --force |
generate-hero.sh | gera hero (1200×600px) + thumbnail (300×200px) e define como featured image |
Logs em /var/log/upnetix-blog-images.log. Toda execução é idempotente: re-rodar com --skip-existing não toca artigos que já têm imagens.
Observações
Princípios que guiam a evolução do projeto.
Preferimos código próprio enxuto a plugins pesados, cache agressivo, conteúdo verificado e comunicação honesta — prometer apenas o que a operação entrega de fato.
