Go to file
Ricardo Carneiro c825fa2736
All checks were successful
BCards Deployment Pipeline / Run Tests (push) Successful in 2s
BCards Deployment Pipeline / PR Validation (push) Has been skipped
BCards Deployment Pipeline / Build and Push Image (push) Successful in 14m52s
BCards Deployment Pipeline / Deploy to Production (ARM - OCI) (push) Successful in 1m31s
BCards Deployment Pipeline / Deploy to Staging (x86 - Local) (push) Has been skipped
BCards Deployment Pipeline / Cleanup Old Resources (push) Has been skipped
BCards Deployment Pipeline / Deployment Summary (push) Successful in 0s
fix: bypass do ssl no program.cs para o opensearch
2025-09-08 18:33:31 -03:00
.claude fix: create plan 2025-09-07 21:39:36 -03:00
.gitea/workflows fix: remover https 2025-09-08 18:30:52 -03:00
scripts feat: release build 2025-07-22 23:19:17 -03:00
src fix: bypass do ssl no program.cs para o opensearch 2025-09-08 18:33:31 -03:00
tests/BCards.Tests feat: Tela de gestão da assinatura 2025-07-14 23:21:25 -03:00
.gitignore feat: primeira versão 2025-06-24 23:25:02 -03:00
appsettings.Production.example.json fix: stripe settings 2025-09-07 18:51:07 -03:00
BCards.sln fix: ajustes de notificações e restrição de tamanho da imagem 2025-09-05 17:49:26 -03:00
CLAUDE.md fix: ajustes de notificações e restrição de tamanho da imagem 2025-09-05 17:49:26 -03:00
clean-build.sh fix: ajustes de notificações e restrição de tamanho da imagem 2025-09-05 17:49:26 -03:00
Conexoes.txt fix: log com delay temporario para logar pagamento 2025-08-31 22:28:20 -03:00
deploy-manual.ps1 feat: script para deploy manual 2025-08-30 22:39:37 -03:00
docker-compose.staging.yml feat: release build 2025-07-22 23:19:17 -03:00
docker-compose.yml feat: primeira versão 2025-06-24 23:25:02 -03:00
Dockerfile fix: build om docker file na raiz 2025-08-17 22:30:42 -03:00
Dockerfile.release fix: novo publish stage no dockerfile.release 2025-07-25 19:55:45 -03:00
GITEA-VARIABLES-SETUP.md fix: stripe settings 2025-09-07 18:51:07 -03:00
README.md fix: ajustes de notificações e restrição de tamanho da imagem 2025-09-05 17:49:26 -03:00
STRIPE-SETUP-GUIDE.md fix: stripe settings 2025-09-07 18:51:07 -03:00

BCards - Clone do LinkTree Profissional

Um clone profissional do LinkTree desenvolvido em ASP.NET Core MVC, focado no mercado brasileiro e espanhol. O projeto oferece URLs hierárquicas organizadas por categoria/ramo de atuação, sistema de pagamentos com Stripe e múltiplos planos com estratégia de pricing psicológico (efeito decoy).

🚀 Características Principais

Funcionalidades

  • URLs Hierárquicas: Organização por categoria (ex: bcards.site/corretor/jose-silva)
  • Sistema de Pagamentos: Integração completa com Stripe
  • 3 Planos com Efeito Decoy: Estratégia psicológica de pricing
  • Autenticação OAuth: Google e Microsoft
  • Temas Dinâmicos: Sistema de temas com CSS personalizado
  • Analytics Avançado: Rastreamento de visualizações e cliques
  • SEO Otimizado: Meta tags dinâmicas e Schema.org
  • Internacionalização: Português e Espanhol
  • Renderização SSR: SEO-friendly

🎯 Planos e Pricing (Estratégia Decoy)

  • Básico (R$ 9,90/mês): 5 links, temas básicos, analytics simples
  • Profissional (R$ 24,90/mês): 15 links, todos os temas, analytics avançado, domínio personalizado (DECOY)
  • Premium (R$ 29,90/mês): Links ilimitados, temas customizáveis, analytics completo, múltiplos domínios

🛠️ Tecnologias

  • Backend: ASP.NET Core MVC (.NET 8)
  • Banco de Dados: MongoDB com MongoDB.Driver
  • Pagamentos: Stripe.NET
  • Autenticação: OAuth 2.0 (Google, Microsoft)
  • Frontend: Bootstrap 5, CSS customizado, JavaScript vanilla
  • Cache: Response Caching e Memory Cache
  • SEO: Server-side rendering, meta tags dinâmicas

📁 Estrutura do Projeto

BCards/
├── src/BCards.Web/
│   ├── Controllers/         # Controllers MVC
│   ├── Models/             # Modelos de dados
│   ├── Services/           # Lógica de negócio
│   ├── Repositories/       # Acesso a dados
│   ├── Views/              # Views Razor
│   ├── Configuration/      # Configurações
│   ├── Middleware/         # Middleware customizado
│   ├── Resources/          # Recursos de localização
│   └── wwwroot/           # Arquivos estáticos
└── tests/BCards.Tests/    # Testes unitários

⚙️ Configuração

1. Pré-requisitos

  • .NET 8 SDK
  • MongoDB 4.4+
  • Conta Stripe (para pagamentos)
  • Credenciais OAuth (Google/Microsoft)

2. Configuração do MongoDB

# Instalar MongoDB localmente ou usar MongoDB Atlas
# String de conexão padrão: mongodb://localhost:27017

3. Configuração das Variáveis de Ambiente

Edite appsettings.json ou appsettings.Development.json:

{
  "MongoDb": {
    "ConnectionString": "mongodb://localhost:27017",
    "DatabaseName": "BCardsDB"
  },
  "Stripe": {
    "PublishableKey": "pk_test_seu_publishable_key",
    "SecretKey": "sk_test_seu_secret_key",
    "WebhookSecret": "whsec_seu_webhook_secret"
  },
  "Authentication": {
    "Google": {
      "ClientId": "seu_google_client_id",
      "ClientSecret": "seu_google_client_secret"
    },
    "Microsoft": {
      "ClientId": "seu_microsoft_client_id",
      "ClientSecret": "seu_microsoft_client_secret"
    }
  },
  "BaseUrl": "https://bcards.site"
}

4. Configuração do Stripe

  1. Crie uma conta no Stripe
  2. Configure os produtos e preços:
    • Básico: R$ 9,90/mês
    • Profissional: R$ 24,90/mês
    • Premium: R$ 29,90/mês
  3. Configure webhooks para: /webhook/stripe
  4. Eventos necessários:
    • checkout.session.completed
    • invoice.payment_succeeded
    • customer.subscription.updated
    • customer.subscription.deleted

5. Configuração OAuth

Google OAuth

  1. Acesse Google Cloud Console
  2. Crie um projeto ou selecione existente
  3. Ative a API Google+
  4. Configure URLs de redirecionamento:
    • https://seudominio.com/auth/googlecallback

Microsoft OAuth

  1. Acesse Azure Portal
  2. Registre uma aplicação
  3. Configure URLs de redirecionamento:
    • https://seudominio.com/auth/microsoftcallback

🚀 Instalação e Execução

1. Clone o repositório

git clone https://github.com/seuusuario/bcards.git
cd bcards

2. Restaurar dependências

dotnet restore

3. Executar a aplicação

cd src/BCards.Web
dotnet run

4. Acessar a aplicação

  • URL local: https://localhost:7001
  • Swagger: https://localhost:7001/swagger (desenvolvimento)

🗄️ Modelos de Dados

User

- Id: string
- Email: string
- Name: string
- ProfileImage: string
- AuthProvider: string
- StripeCustomerId: string
- SubscriptionStatus: string
- CurrentPlan: string

UserPage

- Id: string
- UserId: string
- Slug: string
- Category: string
- BusinessType: string (individual/company)
- DisplayName: string
- Bio: string
- ProfileImage: string
- Theme: PageTheme
- Links: List<LinkItem>
- SeoSettings: SeoSettings
- Analytics: PageAnalytics
- PlanLimitations: PlanLimitations

LinkItem

- Title: string
- Url: string
- Description: string
- Icon: string
- IsActive: bool
- Order: int
- Clicks: int

🎨 Sistema de Temas

O sistema suporta temas dinâmicos com CSS gerado automaticamente:

var theme = new PageTheme
{
    Name = "Tema Personalizado",
    PrimaryColor = "#007bff",
    SecondaryColor = "#0056b3",
    BackgroundColor = "#ffffff",
    TextColor = "#212529",
    BackgroundImage = "/images/bg.jpg"
};

📊 Analytics

Sistema de analytics integrado que rastreia:

  • Visualizações de página
  • Cliques em links
  • Estatísticas por dispositivo
  • Top referenciadores
  • Dados geográficos (básico)

🔒 Segurança

  • Autenticação OAuth segura
  • Validação de entrada em todos os endpoints
  • Rate limiting (recomendado implementar)
  • Headers de segurança
  • Validação de webhooks Stripe
  • Sanitização de URLs

🌐 SEO

Características SEO

  • Meta tags dinâmicas por categoria de negócio
  • Open Graph completo para redes sociais
  • Schema.org markup específico por tipo
  • URLs canônicas hierárquicas
  • Sitemap.xml automático
  • Server-side rendering completo

Exemplo de Meta Tags Geradas

<title>José Silva - Profissional de Corretor de Imóveis | BCards</title>
<meta name="description" content="Conheça José Silva, profissional especializado em corretor de imóveis. Acesse os links e entre em contato.">
<meta name="keywords" content="josé silva, corretor de imóveis, profissional, corretor, imóveis, casa, apartamento, venda, locação">

🚀 Deploy

Opções de Deploy

  1. Azure App Service (recomendado)
  2. IIS (Windows Server)
  3. Docker (containerização)
  4. Linux (Nginx + Kestrel)

Configurações de Produção

{
  "MongoDb": {
    "ConnectionString": "mongodb+srv://user:pass@cluster.mongodb.net/bcards?retryWrites=true&w=majority"
  },
  "Stripe": {
    "PublishableKey": "pk_live_seu_publishable_key",
    "SecretKey": "sk_live_seu_secret_key",
    "WebhookSecret": "whsec_seu_webhook_secret_producao"
  },
  "BaseUrl": "https://bcards.site"
}

🧪 Testes

# Executar todos os testes
dotnet test

# Executar com cobertura
dotnet test --collect:"XPlat Code Coverage"

📈 Melhorias Futuras

Funcionalidades Planejadas

  • PWA (Progressive Web App)
  • API REST completa
  • Integração com Google Analytics
  • Sistema de templates customizáveis
  • Chat de suporte integrado
  • Integração com CRM
  • Backup automático
  • Relatórios avançados em PDF

Otimizações Técnicas

  • Redis para cache distribuído
  • CDN para assets estáticos
  • Rate limiting com Redis
  • Monitoring com Application Insights
  • Health checks
  • Logging estruturado com Serilog

🤝 Contribuindo

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📝 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para detalhes.

🆘 Suporte

Para suporte técnico, entre em contato:

📞 Contato


Desenvolvido com ❤️ para profissionais brasileiros e hispânicos