first commit

This commit is contained in:
Ricardo Carneiro 2025-06-24 23:22:55 -03:00
commit b2d54a1cc0

319
README.md Normal file
View File

@ -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<LinkItem>
- 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
<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
```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**