Recurso · Whitelabel

Whitelabel real, não tema com cores.
Seu produto, sua marca, seu domínio.

Cada cliente tem subdomínio próprio (cliente.skillment.app ou domínio próprio via CNAME), brand pack tokenizado, e-mails transacionais com remetente do tenant. Aluno nem sabe que existe Skillment por baixo.

  • Subdomínio dedicado (cliente.skillment.app) + custom domain via CNAME
  • Brand pack: cores em HSL triplet, tipografia, espaçamentos, raio de bordas
  • Logo + favicon + open graph image per tenant
  • E-mail transacional com remetente do tenant (Resend domain auth)
  • CSS variables injetadas no SSR — sem flash branco no primeiro paint
  • Switcher de tenant pra admins multi-conta

Como funciona, sem mistério.

Subdomínio próprio

cliente.skillment.app por padrão. Custom domain (academia.cliente.com.br) via CNAME quando o cliente quer.

Brand pack tokenizado

Não é só "trocar a logo". Cores em HSL triplet permitem alpha. Tipografia, raio de borda, espaçamento — tudo tokenizado.

E-mail do tenant

Resend domain auth. E-mail sai de noreply@academia.cliente.com.br, não de @skillment.app. Aluno não percebe a infra por baixo.

SSR sem flash

CSS variables injetadas no HTML do servidor. Primeira renderização já tem brand do tenant. Sem "flash of unstyled content".

Edição live

Admin abre /admin/branding, muda cor primária, vê preview em tempo real. Salva, todos os usuários veem o novo brand.

Isolamento multi-tenant

tenant_id em toda entidade. Row-level isolation no DB. Não dá pra ver dados de outro tenant nem por acidente.

Brand pack como dados, não como código.

Cada tenant tem registro em brand_packs com tokens_json validado por Zod. BrandPackTokensSchema garante shape correto: cores em HSL triplet ("49 100% 55%"), Tailwind consome via hsl(var(--primary) / <alpha-value>). Zero hex hardcoded em componentes. Trocar tema é UPDATE numa linha de tabela — não deploy de código.

Quer ver no produto, não só em texto?

Demo público com dados de exemplo, sem cadastro.

Experimentar agora