Projeto · 2026
Dra. Débora Mausolff — Site & SEO
Site da Dra. Débora Mausolff (Clínica Mithie, Canoas/RS) — um motor de SEO local em React: 113 URLs, 86 páginas cidade × serviço geradas por modelo, 18 tipos de dados estruturados, blog e agendamento por WhatsApp que sabe em qual cidade ela atende. Pré-renderizado e publicado na Azure.
Um site de clínica pensado como motor de SEO local: cada uma das 113 páginas existe pra ser achada no Google da cidade certa — e converter em agendamento no WhatsApp, com a mensagem já pronta.

Site profissional da Dra. Débora Mausolff (Clínica Mithie), médica de estética avançada que atende em 5 clínicas de 4 cidades do Rio Grande do Sul — Canoas, Esteio, Tapes e Sertão Santana. O objetivo é presença orgânica forte: ser encontrada nas buscas locais (Botox, harmonização, criolipólise… na cidade certa) e converter em agendamento. Construído em público desde janeiro de 2026: 126 commits em 8 meses.
É um motor de SEO local por construção. Um modelo com 16 serviços (Botox, harmonização facial, labial e glútea, bioestimuladores de colágeno, criolipólise, rinomodelação, olheiras, microagulhamento, vasinhos…) cruzado com as cidades gera 86 landing pages programáticas — cada uma com título, descrição, canonical e conteúdo próprios. Somadas a 11 URLs de blog, 3 de procedimentos e as institucionais, são 113 URLs no sitemap, com lastmod carimbado no build.
Dados estruturados de clínica de verdade: 18 tipos de JSON-LD por rota — MedicalBusiness e MedicalClinic, Service com Offer, Person com Occupation e credencial profissional (EducationalOccupationalCredential), FAQPage com Question/Answer, BlogPosting, BreadcrumbList, ItemList, ImageObject, Organization e WebSite. Mais robots, sitemap e um llms.txt para descoberta por IA. A rotina de SEO faz parte de cada alteração, não de uma etapa depois.
Um SPA que os buscadores leem: um prerender leve pós-build (esbuild) gera, para cada rota indexável do sitemap, o HTML com o head completo — title, description, canonical, robots, Open Graph, Twitter e JSON-LD, marcados para o react-helmet adotar sem duplicar — e o body com H1 e conteúdo. Crawler sem JavaScript vê a página real; o visitante vê o app React assumir ao montar.
Conversão que conhece a agenda: o CTA de agendamento abre um modal para escolher a cidade e a clínica, e o WhatsApp já vem com a mensagem pré-preenchida por cidade e serviço. Blog com 7 artigos respondendo dúvidas reais (quanto dura o Botox, Botox preventivo, quando começar, criolipólise funciona?, quantas sessões, cuidados com vasinhos), galeria de resultados com 25 imagens, depoimentos e a página do Clube do Botox.
Front em React organizado em MVC — 17 models (dados, copy, SEO, consentimento), 8 controllers (hooks) e 45 páginas com 18 componentes — sobre um design system próprio: 32 tokens, paleta quente (creme e marrom), Nunito e serifa editorial (Cormorant / EB Garamond). 33 imagens em WebP.
LGPD que bloqueia de verdade: o Google Analytics e o Meta Pixel só carregam depois do aceite no banner de consentimento; páginas de Política de Privacidade, Termos de Uso e Exclusão de Dados. Build que se defende: source maps removidos e verificados ausentes antes do prerender. Deploy contínuo no Azure Static Web Apps via GitHub Actions, com fallback de SPA e 404 próprio.
Em números
- 113
- URLs no sitemap
- 86
- Páginas cidade × serviço
- 16
- Serviços modelados
- 5
- Clínicas em 4 cidades
- 18
- Tipos de JSON-LD
- 7
- Artigos no blog
- 45
- Páginas React (views)
- 33
- Imagens em WebP
- 0
- Source maps em produção
- 126
- Commits desde jan/2026
Decisões de engenharia
- 01
SEO é parte da tarefa, não etapa extra
Toda mudança de página já atualiza title, canonical, Open Graph, JSON-LD, sitemap e links internos — a rotina de SEO está embutida no fluxo de trabalho. O sitemap ganha lastmod carimbado no build, e o llms.txt descreve o site para agentes de IA.
- 02
86 landing pages de um modelo só
Em vez de escrever página por página, um modelo com 16 serviços cruzado com as cidades atendidas gera as 86 páginas cidade × serviço — cada uma com título, descrição, canonical e conteúdo próprios, para capturar a intenção de busca local sem duplicação boba. Mudou o modelo, mudaram todas.
- 03
Um SPA que os buscadores leem
Sem migrar de framework: um prerender leve pós-build, com esbuild, gera para cada rota indexável o HTML com head completo (marcado para o react-helmet adotar sem duplicar) e body com H1 e conteúdo. Crawler sem JavaScript vê a página real; o visitante vê o React assumir ao montar.
- 04
Dados estruturados de clínica de verdade
18 tipos de JSON-LD por rota: MedicalBusiness e MedicalClinic, Service com Offer, Person com Occupation e credencial profissional, FAQPage com perguntas e respostas, BlogPosting, BreadcrumbList e ItemList. O Google entende que é uma médica, o que ela faz, onde e quanto custa — não só uma página bonita.
- 05
Agendamento que sabe onde ela atende
Ela atende em 5 clínicas de 4 cidades. O CTA abre um modal para escolher cidade e clínica, e o WhatsApp já vem com a mensagem pré-preenchida por cidade e serviço — quem chega pela página de criolipólise em Esteio manda a mensagem certa, para o lugar certo.
- 06
LGPD que bloqueia de verdade
O banner de consentimento não é decorativo: Google Analytics e Meta Pixel só carregam depois do aceite, controlados por um model e um controller de consentimento. Páginas de Política de Privacidade, Termos de Uso e Exclusão de Dados fecham o ciclo.
- 07
Build que se defende
O pipeline de build remove as referências a source maps e depois verifica que nenhum sobrou antes de pré-renderizar — o código-fonte não vai para produção por acidente. Imagens em WebP, cabeçalhos de cache e 404 próprio configurados no Azure Static Web Apps.
- 08
Arquitetura MVC no front
17 models (dados, copy, SEO, consentimento), 8 controllers (hooks) e 45 páginas com 18 componentes. Dados e texto separados de regras e de telas: dá pra escalar serviços, cidades e artigos sem virar bagunça — e um design system de 32 tokens mantém tudo com a mesma cara.
Arquitetura
Models
Dados · copy · SEO
17 models: serviços, cidades e clínicas, blog, SEO por rota, consentimento.
Controllers
8 hooks
Agendamento, consentimento, navegação e estado das telas.
Views
45 páginas React
Home, procedimentos, 86 páginas cidade × serviço, blog, clube e institucionais.
SEO por rota
react-helmet-async
Title, canonical, OG e 18 tipos de JSON-LD; sitemap, robots e llms.txt.
Prerender
SSG leve com esbuild
HTML com head e conteúdo por rota indexável; o React assume ao montar.
Conversão
Modal de cidade e clínica + mensagem pré-preenchida por serviço.
LGPD
Consent gating
GA e Meta Pixel só após o aceite; Privacidade, Termos e Exclusão de Dados.
Azure SWA
GitHub Actions
Build de CI sem source maps, fallback de SPA, 404 próprio e cache.
Stack