# 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 ```bash # 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`: ```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](https://stripe.com) 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](https://console.cloud.google.com) 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](https://portal.azure.com) 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 ```bash git clone https://github.com/seuusuario/bcards.git cd bcards ``` ### 2. Restaurar dependências ```bash dotnet restore ``` ### 3. Executar a aplicação ```bash 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 ```csharp - Id: string - Email: string - Name: string - ProfileImage: string - AuthProvider: string - StripeCustomerId: string - SubscriptionStatus: string - CurrentPlan: string ``` ### UserPage ```csharp - Id: string - UserId: string - Slug: string - Category: string - BusinessType: string (individual/company) - DisplayName: string - Bio: string - ProfileImage: string - Theme: PageTheme - Links: List - SeoSettings: SeoSettings - Analytics: PageAnalytics - PlanLimitations: PlanLimitations ``` ### LinkItem ```csharp - 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: ```csharp 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 ```html José Silva - Profissional de Corretor de Imóveis | BCards ``` ## 🚀 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 ```json { "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 ```bash # 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](LICENSE) para detalhes. ## 🆘 Suporte Para suporte técnico, entre em contato: - Email: suporte@bcards.site - Discord: [Servidor da Comunidade] - Issues: [GitHub Issues](https://github.com/seuusuario/bcards/issues) ## 📞 Contato - **Website**: https://bcards.site - **Email**: contato@bcards.site - **LinkedIn**: [Seu LinkedIn] - **Twitter**: [@vcartme] --- **Desenvolvido com ❤️ para profissionais brasileiros e hispânicos**