commit b2d54a1cc05e441d0115edc27ca49e59aba16f75 Author: Ricardo Carneiro Date: Tue Jun 24 23:22:55 2025 -0300 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..bb9ede9 --- /dev/null +++ b/README.md @@ -0,0 +1,319 @@ +# 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: `vcart.me/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://vcart.me" +} +``` + +### 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://vcart.me" +} +``` + +## 🧪 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@vcart.me +- Discord: [Servidor da Comunidade] +- Issues: [GitHub Issues](https://github.com/seuusuario/bcards/issues) + +## 📞 Contato + +- **Website**: https://vcart.me +- **Email**: contato@vcart.me +- **LinkedIn**: [Seu LinkedIn] +- **Twitter**: [@vcartme] + +--- + +**Desenvolvido com ❤️ para profissionais brasileiros e hispânicos** \ No newline at end of file