Fala, pessoal! 👋
Recentemente enfrentei o desafio de criar uma plataforma de agregador de links profissionais do zero (estilo Linktree), mas com foco em resolver dois problemas que as ferramentas tradicionais de mercado deixam de lado: SEO de nicho de verdade e limpeza contra links de spam/phishing.
O resultado desse projeto foi o BCards, e hoje quero compartilhar um pouco das decisões de arquitetura e tecnologia que tomei para colocá-lo de pé.
🛠️ A Stack Escolhida
Para garantir velocidade de entrega, robustez e performance de busca, escolhi uma stack moderna e muito sólida:
- Backend: ASP.NET Core MVC com .NET 8 (C#)
- Banco de Dados: MongoDB (com drivers oficiais para .NET)
- Armazenamento de Arquivos (PDFs/Imagens): MongoDB GridFS
- Pagamentos: Stripe (com webhooks)
- Autenticação: OAuth 2.0 (Google e Microsoft)
- Envio de E-mail: SMTP Resend
🧠 Desafios e Soluções de Arquitetura
1. Sistema de Multi-Tenant e Multi-Domínio
Um agregador de links precisa suportar várias marcas e domínios. No código do BCards, configurei para responder a múltiplos hosts (como bcards.page, bcards.site, spicylinks.site) de forma dinâmica a partir das configurações de Tenant do appsettings.json.
Isso permite que a aplicação seja modular, entregando interfaces customizadas de acordo com o domínio que o usuário acessa, usando o mesmo núcleo do backend.
2. SEO Otimizado com Server-Side Rendering (SSR)
Muitos criadores de link na bio pecam no SEO por renderizarem tudo no cliente (Client-Side Rendering) com frameworks SPA pesados. No BCards, optei por SSR puro via Razor Views.
O robô do Google recebe o HTML limpo, completo, com meta-tags dinâmicas e marcação Schema.org otimizada por nicho de mercado.
3. A Luta Contra o Spam (Moderação Humana)
Ferramentas de links são alvos constantes de spammers, esquemas de pirâmide e phishing. Para proteger o domínio e manter nossa autoridade no Google sempre alta, desenvolvi um Dashboard de Moderação Humana.
Cada página criada passa por uma fila onde validamos critérios estritos de conteúdo (conteúdo suspeito, links quebrados e segurança de links) antes de torná-la 100% ativa para o público.
4. Stripe Integration & Efeito Decoy
Adotei 3 planos estratégicos integrados nativamente com Stripe Webhooks. O sistema escuta os eventos checkout.session.completed e atualiza instantaneamente as limitações da página do usuário no banco (como permitir upload de PDFs no plano Premium e habilitar até 15 páginas).
🚀 Conclusão e Próximos Passos
O projeto está ativo e rodando muito bem. A combinação de .NET 8 e MongoDB se provou extremamente veloz para leitura de dados e flexível para modificações de schema à medida que novas features de links são adicionadas.
Gostaria muito de ouvir a opinião técnica de vocês sobre esse modelo arquitetural!
Se quiserem ver como ficou a interface final e criar uma página de testes, o link é: https://bcards.page
Fico à disposição nos comentários para trocar ideias sobre o código, integrações do Stripe ou a estrutura do MongoDB! 💬
Top comments (0)