Plataforma de membros 2026
Be Adonis
Plataforma de membros para desenvolvimento pessoal masculino: um site público e uma área de treino privada, The Forge, em que o acesso pago depende só de webhooks Stripe com assinatura verificada.
O projeto
O Be Adonis é uma plataforma de membros dedicada ao desenvolvimento pessoal masculino. Tem duas partes: um site público, que apresenta a filosofia e os seis pilares do programa e trata do registo e do checkout, e uma área de treino privada chamada The Forge. Além da conta gratuita há duas modalidades pagas, The Campaign (49 € por mês) e The Vow (500 € de uma só vez, com acesso vitalício). Todo o conteúdo está em inglês.
Na The Forge, o membro entra num Command Center que mostra a próxima ação mais útil, em vez de uma lista de tarefas a competir entre si. A partir daí há cursos com módulos, aulas em vídeo, notas e legendas, trabalhos práticos com entrega de provas, e o Execution Lab, com missões semanais, tarefas configuráveis, séries e um balanço no fim de cada missão. O progresso traduz-se em cinco patentes. Há ainda chamadas em direto com perguntas dos membros e arquivo de gravações, recursos para descarregar, pesquisa e notificações na aplicação e por email. Os membros gratuitos veem o conteúdo pago bloqueado, sem que o material protegido fique exposto.
Uma área de administração gere cursos, missões, chamadas, recursos, anúncios, membros e o estado de entrega das notificações. O site está em produção em Laravel Cloud, atrás da Cloudflare. A faturação vem desligada na configuração de produção de exemplo e só deve ser ativada depois de fechadas as decisões fiscais e legais. O encerramento de conta é um processo faseado, que espera pelo fim confirmado da subscrição, anonimiza o perfil e conserva os registos financeiros.
Em detalhe.
Direção visual.
A marca é escura e clássica. As superfícies são mármore quase preto, com textura, o texto é cor de osso e o bronze é o único acento, com um vermelho-sangue e um verde-louro reservados a estados. Os títulos usam Bodoni Moda em peso black e em itálico, o texto corrido usa Archivo, e a JetBrains Mono fica para etiquetas e números. O hero é uma faixa fixa de 450vh: o título gigante desvanece com o scroll e dá lugar a três painéis numerados sobre o mito de Adónis. Por cima, o rasto do cursor, ou um toque no telemóvel, revela um modelo por baixo da estátua clássica através de máscaras CSS. As fontes são servidas pelo próprio site, só nos subconjuntos latinos, e a animação respeita prefers-reduced-motion.
Tipografia
- Bodoni Moda
- Archivo
- JetBrains Mono
Cores
- #040302
- #16100C
- #ECE7DE
- #DEA645
- #932B2A
Por dentro.
-
01
É uma única aplicação Laravel 13 renderizada no servidor com Blade, Tailwind CSS 4 e Alpine.js. A lógica de progresso, patentes, séries, faturação, notificações e encerramento de conta vive em serviços. Um único serviço responde a todas as perguntas de acesso com um mapeamento documentado dos estados do Stripe, e todos os endpoints de credenciais têm limite de pedidos.
-
02
Os pagamentos usam o Stripe Checkout e o Customer Portal através do Laravel Cashier 16. A página de sucesso do checkout nunca concede acesso: o estado de membro só muda depois de um webhook com assinatura verificada. Os produtos são identificados por Price IDs, e o servidor volta a validar valor, moeda e periodicidade antes de vender.
-
03
Um registo de eventos com chave única por evento torna o processamento de webhooks idempotente perante entregas duplicadas, concorrentes ou fora de ordem, sem guardar os payloads. A compra vitalícia tem um registo próprio: um reembolso total revoga o acesso e um parcial mantém-no. O comando billing:reconcile repara desvios no modelo de leitura local.
-
04
O progresso das aulas é calculado no servidor. O browser envia amostras ordenadas da reprodução e só conta a visualização contínua compatível com o tempo decorrido no servidor e com uma velocidade até 2×, por isso avançar no vídeo não dá crédito. Um só componente de leitor tem adaptadores para YouTube, Vimeo e vídeo nativo, e os ficheiros privados são servidos por rotas autenticadas com as mesmas verificações da página da aula.
-
05
Todas as notificações passam por um único fluxo, com um registo de entregas com chave única por utilizador e evento. Repetições do agendador, cliques duplos e novas tentativas da fila não geram duplicados, e os envios falhados são repetidos até três vezes. Filas, cache e sessões correm em MySQL, sem Redis, com um só worker que consome três filas por ordem de prioridade, a começar pelo encerramento de conta. O email de produção sai por Mailgun.
-
06
A produção corre em Laravel Cloud com MySQL 8.4 e dois buckets de armazenamento, um privado e um público. Comandos de verificação recusam uma release com debug ativo, chaves Stripe de teste, SQLite, um mailer que não entrega ou dados de demonstração. A suite PHPUnit corre em SQLite em memória, e o GitHub Actions corre também uma suite separada em MySQL 8.4, o build do frontend e npm audit. Os cabeçalhos de segurança são servidos pela aplicação, com a CSP em modo report-only.