first commit
This commit is contained in:
commit
b2d54a1cc0
319
README.md
Normal file
319
README.md
Normal 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**
|
||||
Loading…
Reference in New Issue
Block a user