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.

Captura da home do site da Dra. Débora Mausolff: hero em tons de creme com a chamada de harmonização facial e corporal, botões de agendamento e a faixa de diferenciais.

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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

WhatsApp

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

ReactReact Routerreact-helmet-asyncJSON-LDesbuildAzure Static Web AppsGitHub Actions