320 lines
8.5 KiB
Markdown
320 lines
8.5 KiB
Markdown
# 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$ 12,90/mês): 5 links, temas básicos, analytics simples
|
|
- **Profissional** (R$ 25,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$ 12,90/mês
|
|
- Profissional: R$ 25,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://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**
|