Energia Natural
Site institucional dinâmico para empresa de formação e serviços de energia. Veio com requisitos pesados: back-office completo, login sem passwords, analytics próprio, RGPD por design — e tudo a custo zero.

O desafio
- Cliente precisava de gerir mensagens, eventos, projectos, serviços, definições, utilizadores e histórico — tudo via admin.
- 16 páginas de serviço tinham de ser geradas a partir da base de dados, não estáticas.
- Login tinha de ser passwordless (a equipa não consegue gerir credenciais).
- Analytics tinha de existir mas sem cookies — RGPD por design, não por consentimento.
- Orçamento operacional: zero. Tudo tinha de viver em free tiers.
A abordagem
Astro 5 em SSR híbrido sobre Cloudflare Pages + D1 + R2. Magic links com tokens de uso único e allowlist em D1 — sem passwords, sem fricção. Analytics próprio escrito em ~150 linhas que escreve directamente para D1, sem cookies, sem ferramenta externa. Toda a stack vive em free tiers da Cloudflare e Resend.
Blocos construídos
Back-office completo
8 módulos: mensagens, eventos, projectos, serviços, definições, utilizadores, analytics, histórico.
Páginas dinâmicas
16 páginas de serviço geradas em SSR a partir de D1.
Auth passwordless
Magic links via Resend, tokens de uso único, allowlist D1.
Analytics cookieless
~150 linhas, RGPD por design, dashboard próprio.
Email do domínio
@energianatural.pt via Cloudflare Email Routing, free tier.
Anti-spam
Turnstile + honeypot + rate-limit por email no formulário.
O que aprendi
Cloudflare D1 é suficiente para 90% dos sites
Comecei nervoso com SQLite distribuída — não precisava. Para sites institucionais com até alguns milhares de utilizadores, D1 é mais que suficiente, é grátis, e a integração com Cloudflare Pages é trivial.
Custom CMS levou mais tempo que esperava
Subestimei o esforço de fazer um back-office com 8 módulos. Da próxima vez ou cobro mais ou uso uma stack como Payload CMS para módulos genéricos e só escrevo custom o que é específico do cliente.
Lighthouse 100/100/100/100 é overkill mas ajuda a vender
Atingir 100 em todas as categorias custou ~2 dias extra. Em termos práticos para o utilizador final, 90+ era suficiente. Mas o screenshot do Lighthouse perfeito é um argumento de venda directo para o próximo cliente.
Magic links são melhor UX que passwords
A cliente nunca pediu "esqueci-me da password" porque não há password para esquecer. Para equipas pequenas (até ~20 utilizadores), recomendo sempre.
Próximos passos
Próxima fase: integrar pagamentos para inscrições em formações e expandir o sistema de notificações para SMS além do email. Aguardo feedback de uso real antes de avançar.
Precisas de uma plataforma à medida?
Posso desenhar e construir uma stack completa para o teu negócio — back-office incluído.