Nicchon.
Todos os projetos
SiteEm produção· 2024

Resta Um Psicanálise

Site institucional de duas psicanalistas. Padrão JSON estático + DB como fonte, zero consulta ao banco no path crítico.

Capa do projeto Resta Um Psicanálise

Sobre

Site institucional de duas psicanalistas em sociedade — Camilla Baratto (CRP 06/115513) e Gabriela Mota (CRP 06/135864), em Pinheiros/SP. Migração de WordPress antigo. CMS pequeno (5 páginas, 12 chaves) com decisão consciente: sem agendamento, sem pagamento, sem área do paciente — funil único é wa.me. Painel admin custom (5 abas) com Quill 2 customizado (toolbar curada) e histórico de edições com botão 'Restaurar' forward-only. Analytics próprio em MySQL com 700+ linhas. Script prepare-deploy.mjs mescla Next.js + PHP em pasta única e sobe via FTP — sem Node em produção.

Stack

  • Next.js 16 (export estático)
  • PHP 8
  • PDO
  • MySQL
  • Tailwind
  • TypeScript
  • Quill 2.0.3
  • Hostinger (shared)

Decisões

  • Padrão JSON estático como cache + DB como fonte de verdade — a cada save no painel, PHP reescreve /settings.json; frontend renderiza com defaults hardcoded primeiro (sem flash) e depois faz fetch do JSON estático. Zero consulta ao banco no path crítico do usuário final.
  • CMS chave-valor + Quill 2.0.3 com toolbar curada (H2/H3/bold/italic/listas) — sem opções complexas, biopsicanalista preenche sem treinamento.
  • og:image dinâmica via redirect 302 server-side — crawlers de WhatsApp/Facebook/LinkedIn sempre veem foto atual sem precisar rebuildar o Next.js.
  • SEO técnico nota 10: metadata + OG + Twitter Cards + Schema.org JSON-LD (MedicalOrganization + FAQPage + Person), sitemap dinâmico, H1 poético com versão SEO em sr-only, canonical em todas as páginas.
  • Analytics próprio em MySQL com 700+ linhas: KPIs com variação %, gráficos em SVG/CSS puro, geo via ip-api.com, UTM completo, click IDs (fbclid/ttclid/gclid/msclkid/twclid), funil de conversão, insights automáticos em texto natural. Filtro server-side de bots antes do INSERT. LGPD-friendly (não armazena IP).
  • CTA único wa.me em 3 posições (card_home, pagina_individual, botao_flutuante) com tracking de origem distinto — funil completo via WhatsApp, conversão medida pelo clique.

Desafios técnicos

  • Histórico de edições forward-only com botão 'Restaurar' por linha — cobre settings, fotos (flag ativa) e formações (reverte JSON inteiro). Restaurar gera novo registro, nunca apaga.
  • CRUD de formação acadêmica com drag-and-drop HTML5 nativo + setas + ordenação por ano via regex — sem libs de DnD, sem React DnD nem dnd-kit.
  • Deploy híbrido Next+PHP via FTP: prepare-deploy.mjs mescla out/ (Next) com php/ (admin/api/db) em dist/ e sobe via FTP. Sem Node em produção.