|
Some checks failed
BCards Deployment Pipeline / Run Tests (push) Successful in 2s
BCards Deployment Pipeline / PR Validation (push) Has been skipped
BCards Deployment Pipeline / Build and Push Image (push) Successful in 9m59s
BCards Deployment Pipeline / Deploy to Test (x86 - Local) (push) Has been skipped
BCards Deployment Pipeline / Deploy to Production (ARM - OCI) (push) Failing after 0s
BCards Deployment Pipeline / Cleanup Old Resources (push) Has been skipped
BCards Deployment Pipeline / Deployment Summary (push) Successful in 0s
|
||
|---|---|---|
| .claude | ||
| .gitea/workflows | ||
| deploy | ||
| scripts | ||
| src | ||
| tests/BCards.Tests | ||
| .dockerignore | ||
| .gitignore | ||
| appsettings.Production.example.json | ||
| BCards.sln | ||
| categorias.json | ||
| CLAUDE.md | ||
| clean-build.sh | ||
| Conexoes.txt | ||
| deploy-manual.ps1 | ||
| docker-compose.staging.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Dockerfile.release | ||
| GITEA-VARIABLES-SETUP.md | ||
| README.md | ||
| STRIPE-SETUP-GUIDE.md | ||
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
# 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:
{
"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
- Crie uma conta no Stripe
- 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
- Configure webhooks para:
/webhook/stripe - Eventos necessários:
checkout.session.completedinvoice.payment_succeededcustomer.subscription.updatedcustomer.subscription.deleted
5. Configuração OAuth
Google OAuth
- Acesse Google Cloud Console
- Crie um projeto ou selecione existente
- Ative a API Google+
- Configure URLs de redirecionamento:
https://seudominio.com/auth/googlecallback
Microsoft OAuth
- Acesse Azure Portal
- Registre uma aplicação
- Configure URLs de redirecionamento:
https://seudominio.com/auth/microsoftcallback
🚀 Instalação e Execução
1. Clone o repositório
git clone https://github.com/seuusuario/bcards.git
cd bcards
2. Restaurar dependências
dotnet restore
3. Executar a aplicação
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
- Id: string
- Email: string
- Name: string
- ProfileImage: string
- AuthProvider: string
- StripeCustomerId: string
- SubscriptionStatus: string
- CurrentPlan: string
UserPage
- 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
- 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:
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
<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
- Azure App Service (recomendado)
- IIS (Windows Server)
- Docker (containerização)
- Linux (Nginx + Kestrel)
Configurações de Produção
{
"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
# 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
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
📝 Licença
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para detalhes.
🆘 Suporte
Para suporte técnico, entre em contato:
- Email: suporte@bcards.site
- Discord: [Servidor da Comunidade]
- Issues: GitHub Issues
📞 Contato
- Website: https://bcards.site
- Email: contato@bcards.site
- LinkedIn: [Seu LinkedIn]
- Twitter: [@vcartme]
Desenvolvido com ❤️ para profissionais brasileiros e hispânicos