# QR Rapido - Gerador QR Code Ultrarrápido

[![.NET](https://img.shields.io/badge/.NET-8.0-purple)](https://dotnet.microsoft.com/)
[![Docker](https://img.shields.io/badge/Docker-Ready-blue)](https://www.docker.com/)
[![License](https://img.shields.io/badge/License-MIT-green)](LICENSE)

**QR Rapido** é o gerador de QR codes mais rápido da web, focado em velocidade extrema e experiência do usuário. Gere códigos QR em menos de 1.2 segundos com suporte multilíngue (PT-BR, ES, EN).

## 🚀 Principais Características

- ⚡ **Ultra-rápido**: Geração média em 1.2s (0.4s para usuários premium)
- 🌐 **Multilíngue**: Suporte para Português, Espanhol e Inglês
- 🔒 **Autenticação Social**: Login com Google e Microsoft
- 👑 **Sistema Premium**: Stripe integrado com recursos avançados
- 📱 **PWA Ready**: Funciona como aplicativo móvel
- 🎨 **UI Moderna**: Bootstrap 5 com design focado em velocidade
- 🏗️ **Escalável**: MongoDB + Redis para alta performance

## 🎯 Funcionalidades por Usuário

### 👤 Usuários Anônimos
- ✅ 10 QR codes gratuitos por dia
- ✅ Tipos básicos (URL, Texto, WiFi, vCard, SMS, Email)
- ✅ Personalização básica
- ❌ Anúncios em todas as páginas

### 🔐 Usuários Logados (Free)
- ✅ 50 QR codes por dia
- ✅ **30 dias sem anúncios** após login
- ✅ Histórico de QR codes salvos
- ✅ Download em múltiplos formatos (PNG, SVG, PDF)

### 👑 Usuários Premium (R$ 19,90/mês)
- ✅ QR codes **ilimitados**
- ✅ **Sem anúncios permanentemente**
- ✅ Geração prioritária (0.4s)
- ✅ QR codes dinâmicos (editáveis)
- ✅ Suporte prioritário
- ✅ API access

## 🛠️ Tecnologias

### Backend
- **ASP.NET Core 8.0** - Framework principal
- **MongoDB** - Banco de dados principal
- **Redis** - Cache distribuído
- **QRCoder** - Geração de QR codes otimizada
- **Stripe** - Processamento de pagamentos

### Frontend
- **Bootstrap 5** - Framework CSS
- **JavaScript ES6+** - Funcionalidades interativas
- **Font Awesome** - Ícones
- **Progressive Web App** - Capacidades mobile

### DevOps
- **Docker & Docker Compose** - Containerização
- **GitHub Actions** - CI/CD
- **Nginx** - Proxy reverso
- **Azure** - Cloud hosting

## 🚀 Instalação e Execução

### Pré-requisitos
- .NET 8.0 SDK
- Docker & Docker Compose
- MongoDB (ou via Docker)
- Redis (ou via Docker)

### 1. Clone o Repositório
```bash
git clone https://github.com/seu-usuario/qrrapido.git
cd qrrapido
```

### 2. Configuração das Variáveis de Ambiente
Crie um arquivo `.env` na raiz do projeto:
```bash
# OAuth Providers
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
MICROSOFT_CLIENT_ID=your-microsoft-client-id
MICROSOFT_CLIENT_SECRET=your-microsoft-client-secret

# Stripe
STRIPE_PUBLISHABLE_KEY=pk_test_xxxxx
STRIPE_SECRET_KEY=sk_test_xxxxx
STRIPE_WEBHOOK_SECRET=whsec_xxxxx
STRIPE_PRICE_ID=price_xxxxx

# Google Analytics
GA_MEASUREMENT_ID=G-XXXXXXXXXX

# AdSense
ADSENSE_CLIENT_ID=ca-pub-XXXXXXXXXX
```

### 3. Execução com Docker (Recomendado)
```bash
# Iniciar todos os serviços
docker-compose up -d

# Verificar logs
docker-compose logs -f qrrapido
```

### 4. Execução Local (Desenvolvimento)
```bash
# Restaurar dependências
dotnet restore

# Executar aplicação
dotnet run

# Ou com hot reload
dotnet watch run
```

### 5. Executar Testes
```bash
# Testes unitários
dotnet test

# Com cobertura
dotnet test --collect:"XPlat Code Coverage"
```

## 🏗️ Arquitetura

```
QRRapidoApp/
├── Controllers/         # Controladores MVC e API
├── Services/           # Lógica de negócio
├── Models/             # Modelos de dados
├── Views/              # Views Razor
├── Data/               # Contexto MongoDB
├── Middleware/         # Middleware customizado
├── Resources/          # Localização (PT-BR, ES, EN)
├── wwwroot/           # Arquivos estáticos
└── Tests/             # Testes unitários
```

### Fluxo de Geração de QR
1. **Frontend**: Coleta dados do formulário com timer
2. **Controller**: Valida e processa requisição
3. **Service**: Verifica cache, gera QR otimizado
4. **Cache**: Redis para resultados frequentes
5. **Database**: MongoDB para histórico e usuários
6. **Response**: Base64 + metadados de performance

## 📊 Sistema de Monetização

### Lógica Ad-Free Inteligente
```mermaid
graph TD
    A[Usuário acessa] --> B{Logado?}
    B -->|Não| C[Mostrar anúncios]
    B -->|Sim| D{Premium?}
    D -->|Sim| E[Sem anúncios]
    D -->|Não| F{30 dias ativo?}
    F -->|Sim| G[Sem anúncios + countdown]
    F -->|Não| H[Anúncios + upgrade CTA]
```

### Configuração de Tempo Ad-Free
- **Padrão**: 30 dias após login
- **Promocional**: 90 dias (Black Friday)
- **Trial**: 7 dias para testes A/B
- **Premium**: Ilimitado

## 🌐 Suporte Multilíngue

### Idiomas Suportados
- **Português (BR)** - Idioma padrão
- **Espanhol (ES)** - Foco no mercado latino
- **Inglês (EN)** - Mercado global

### SEO por Idioma
- URLs amigáveis: `/pt/`, `/es/`, `/en/`
- Meta tags específicas por idioma
- Hreflang tags para SEO internacional
- Structured data Schema.org

## 🔧 Configuração

### appsettings.json Principais Seções
```json
{
  "AdFree": {
    "LoginMinutes": 43200,  // 30 dias
    "TrialMinutes": 1440    // 1 dia
  },
  "Performance": {
    "QRGenerationTimeoutMs": 2000,
    "MaxConcurrentGenerations": 100
  },
  "Premium": {
    "FreeQRLimit": 50,
    "PremiumPrice": 19.90
  }
}
```

## 📈 Performance e Otimizações

### Metas de Performance
- **Geração QR**: < 1.2s (média), < 0.4s (premium)
- **Cache Hit Rate**: > 80%
- **Disponibilidade**: 99.9%
- **First Contentful Paint**: < 2s

### Otimizações Implementadas
- **Concurrent Semaphore**: Limita gerações simultâneas
- **Redis Cache**: Cache distribuído por conteúdo
- **Error Correction Adaptativo**: Menor ECC = maior velocidade
- **Pixels per Module Otimizado**: Qualidade vs velocidade
- **CDN Ready**: Assets estáticos otimizados

## 🧪 Testes

### Cobertura de Testes
- **Services**: Testes unitários com Moq
- **Controllers**: Testes de integração
- **QR Generation**: Testes de performance
- **Ad Logic**: Testes de lógica de negócio

### Executar Testes
```bash
# Todos os testes
dotnet test

# Específicos
dotnet test --filter "QRRapidoServiceTests"

# Com relatório de cobertura
dotnet test --collect:"XPlat Code Coverage"
```

## 🚀 Deploy

### Produção com Docker
```bash
# Build da imagem
docker build -t qrrapido:latest .

# Deploy com compose
docker-compose -f docker-compose.prod.yml up -d
```

### CI/CD GitHub Actions
Pipeline automatizado que executa:
1. **Tests**: Testes unitários e integração
2. **Build**: Build otimizado para produção
3. **Deploy**: Deploy automático para Azure
4. **Monitoring**: Notificações Slack

## 📱 PWA (Progressive Web App)

### Funcionalidades
- **Offline Support**: Cache de assets críticos
- **Install Prompt**: Instalar como app móvel
- **Shortcuts**: Atalhos para tipos de QR
- **Push Notifications**: Notificações de limite

### Manifest Features
```json
{
  "shortcuts": [
    {
      "name": "Gerar QR URL",
      "url": "/?type=url"
    }
  ]
}
```

## 🔒 Segurança

### Medidas Implementadas
- **Input Validation**: Sanitização de todos os inputs
- **Rate Limiting**: Proteção contra abuse
- **HTTPS Only**: Redirect automático
- **Secure Headers**: HSTS, CSP, etc.
- **OAuth Secure Flow**: Google/Microsoft integração
- **Stripe Webhooks**: Verificação de assinatura

## 📊 Analytics e Monitoramento

### Google Analytics 4 Events
- `qr_generated`: Rastreamento de geração
- `speed_comparison`: Comparação de velocidade
- `upgrade_attempt`: Tentativas de upgrade
- `language_change`: Mudança de idioma

### Métricas de Negócio
- **Taxa de conversão**: Anônimo → Login → Premium
- **Tempo médio de geração**: Performance tracking
- **Uso por idioma**: Análise de mercado
- **Churn rate**: Retenção de usuários premium

## 🤝 Contribuição

1. Fork o projeto
2. Crie uma branch (`git checkout -b feature/nova-funcionalidade`)
3. Commit suas mudanças (`git commit -am 'Adiciona nova funcionalidade'`)
4. Push para a branch (`git push origin feature/nova-funcionalidade`)
5. Abra um Pull Request

## 📝 Roadmap

### Q1 2024
- [ ] API REST completa
- [ ] Webhooks para QR dinâmicos
- [ ] Dashboard de analytics premium
- [ ] Suporte a logos personalizados

### Q2 2024
- [ ] Aplicativo móvel nativo
- [ ] Integração com Zapier
- [ ] QR codes em lote
- [ ] White-label solution

## 📄 Licença

Este projeto está licenciado sob a licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.

## 🆘 Suporte

### Para Usuários
- **Email**: contato@qrrapido.site
- **Chat**: Disponível no site para usuários premium
- **FAQ**: Documentação completa no site

### Para Desenvolvedores
- **Issues**: Use o GitHub Issues
- **Documentação**: Wiki do repositório
- **API Docs**: Swagger disponível em `/swagger`

---

**QR Rapido** - Velocidade extrema meets experiência excepcional 🚀

*Desenvolvido com ❤️ para a comunidade de desenvolvedores*

No WSL - Para rodar o webhook do stripe local.
```bash
stripe listen --forward-to https://localhost:52428/pagamento/stripewebhook --skip-verify
