Vitrine: subdomínio e domínio personalizado
Cada minha loja com vitrine habilitada ganha uma página pública para exibir suas promoções. O endereço padrão é um subdomínio exclusivo na PromoDash; no plano Pro ou superior você pode usar um domínio próprio.
Subdomínio PromoDash (todos os planos com vitrine)
Ao criar ou editar uma loja em /dashboard/stores, defina o campo Subdomínio da vitrine (ou deixe em branco para gerar a partir do nome).
| Exemplo de subdomínio | URL pública |
|---|---|
ofertas-tech | https://ofertas-tech.promodash.pro |
promo-casa | https://promo-casa.promodash.pro |
Regras importantes
- O subdomínio é único em toda a plataforma — dois usuários não podem usar o mesmo identificador.
- Use apenas letras minúsculas, números e hífens (2 a 80 caracteres).
- Alguns nomes são reservados pela plataforma (
www,api,app,admin,login, etc.) e não podem ser escolhidos. - Se o nome já existir, o sistema sugere uma variação (por exemplo
minha-loja-2).
No banco de dados o subdomínio é armazenado no campo slug da loja. Na interface ele aparece como “Subdomínio da vitrine”.
Quem tem vitrine?
| Plano | Quantidade de lojas (vitrines) |
|---|---|
| Starter | Não inclui vitrine |
| Essencial | 1 loja |
| Pro | Ilimitadas |
| Enterprise | Ilimitadas |
Domínio personalizado (Pro e Enterprise)
No plano Pro (growth no sistema) ou Enterprise, na aba Vitrine do formulário da loja, o campo Domínio personalizado fica disponível.
Exemplo: em vez de https://ofertas-tech.promodash.pro, seus visitantes acessam https://promos.seusite.com.br.
O que você precisa fazer
- Ter um domínio que você controla (registro DNS).
- Criar um registro CNAME (ou equivalente) apontando para a infraestrutura da vitrine PromoDash (instruções exatas dependem do ambiente de produção).
- Aguardar propagação DNS e certificado HTTPS (TLS automático na infra).
- Salvar o domínio no painel sem
https://— apenaspromos.seusite.com.br.
Nos planos Starter e Essencial, o campo de domínio personalizado fica desabilitado e a API não aceita esse valor. Faça upgrade para Pro em /dashboard/plans.
Comportamento
- Com domínio personalizado configurado e validado, ele passa a ser a URL principal divulgada na vitrine.
- O subdomínio
*.promodash.procontinua existindo como endereço padrão da plataforma. - A vitrine só fica acessível se Vitrine pública habilitada estiver ligada e a loja estiver Ativa.
Desabilitar a vitrine
Na aba Vitrine, desligue Vitrine pública habilitada. Visitantes deixam de ver a página (subdomínio e domínio próprio ficam indisponíveis).
Relação com produtos
Produtos vinculados à loja e com Destaque na vitrine (e status ativo) entram na listagem pública, respeitando a ordem dos produtos definida na loja.
Infraestrutura (DNS e deploy)
A vitrine roda no mesmo app Next.js do PromoDash. O proxy.ts detecta o Host e reescreve para a rota interna /showcase.
Arquitetura recomendada
| Host | Uso |
|---|---|
promodash.pro | Site / landing |
app.promodash.pro | Painel (/dashboard) |
*.promodash.pro | Vitrines (ofertas-tech.promodash.pro, etc.) |
promos.seusite.com.br | Domínio custom do cliente (Pro+) |
1. DNS wildcard (subdomínios)
No provedor DNS (Cloudflare, Route53, etc.), crie um registro para a raiz das vitrines:
| Tipo | Nome | Valor |
|---|---|---|
CNAME ou A | * (wildcard) | destino do deploy (ex.: cname.vercel-dns.com ou IP do servidor) |
Exemplo Cloudflare: registro * → CNAME → seu projeto Vercel, com proxy laranja ativo (HTTPS).
Também configure app e @ apontando para o mesmo deploy (ou separado, se usar projetos distintos).
2. Plataforma de deploy (ex.: Vercel)
- Adicione os domínios no projeto:
promodash.pro,app.promodash.pro,*.promodash.pro. - A Vercel emite TLS para wildcard automaticamente no plano Pro.
- Variáveis de ambiente:
NEXT_PUBLIC_SHOWCASE_ROOT_DOMAIN=promodash.proNEXT_PUBLIC_APP_URL=https://app.promodash.proSHOWCASE_APP_HOSTS=app.promodash.pro,promodash.pro,www.promodash.pro
3. Domínio personalizado do cliente
O cliente cria, no DNS dele:
| Tipo | Nome | Valor |
|---|---|---|
CNAME | promos (ou @) | destino indicado pela PromoDash (ex.: cname.promodash.pro) |
No painel da hospedagem, adicione também o domínio do cliente ao projeto (Vercel: Domains → promos.seusite.com.br). O campo Domínio personalizado na loja deve ser idêntico ao host (sem https://).
4. Desenvolvimento local
Sem wildcard no localhost, use uma destas opções:
Opção A — URL direta (mais simples)
http://localhost:3000/showcase?slug=promofyOpção B — Subdomínio local
- Edite
/etc/hosts:127.0.0.1 promofy.localhost - Acesse
http://promofy.localhost:3000(o proxy trata*.localhostse o host não estiver emSHOWCASE_APP_HOSTS).
Defina no .env:
NEXT_PUBLIC_SHOWCASE_ROOT_DOMAIN=localhost
SHOWCASE_APP_HOSTS=localhost,127.0.0.15. Checklist
- Wildcard
*.promodash.prono DNS - Domínios no provedor de deploy + HTTPS
- Env
NEXT_PUBLIC_SHOWCASE_ROOT_DOMAINem produção - Loja ativa + vitrine habilitada + produtos com Destaque na vitrine
- (Pro+) CNAME do domínio custom + domínio adicionado no deploy
Próximos passos
- Minhas lojas — criar e personalizar o perfil
- Planos e limites — limites por tier
- Especificação técnica:
specs/13_VITRINE_ONLINE.md