Go to file
Ricardo Carneiro 122b0e6f51
Some checks failed
Deploy QR Rapido / test (push) Successful in 26s
Deploy QR Rapido / build-and-push (push) Successful in 28s
Deploy QR Rapido / deploy-staging (push) Has been skipped
Deploy QR Rapido / deploy-production (push) Failing after 6s
fix: deploy sem fingerprint
2025-08-05 21:28:22 -03:00
.claude fix: Melhorar a leitura mesmo com o logotipo maior. 2025-08-04 01:50:54 -03:00
.github/workflows feat: deploy to production 2025-08-05 21:13:21 -03:00
Controllers fix: msg ao excluir 2025-08-04 20:37:59 -03:00
Data feat: Historico e localização! 2025-07-29 19:11:47 -03:00
Middleware feat: ajustes do stripe 2025-08-03 19:52:32 -03:00
Models fix: Melhorar a leitura mesmo com o logotipo maior. 2025-08-04 01:50:54 -03:00
Properties feat: ajustes na seleção do tipo de qr code. 2025-08-01 16:35:52 -03:00
Resources feat: delete e es-py 2025-08-04 20:34:29 -03:00
Services feat: delete e es-py 2025-08-04 20:34:29 -03:00
Tests feat: delete e es-py 2025-08-04 20:34:29 -03:00
Views feat: delete e es-py 2025-08-04 20:34:29 -03:00
wwwroot feat: delete e es-py 2025-08-04 20:34:29 -03:00
.gitignore first commit 2025-07-28 11:46:48 -03:00
appsettings.json fix: deploy sem fingerprint 2025-08-05 21:28:22 -03:00
BUILD_FIXES_APPLIED.md fix: botão para compartilhar o qrcode no cel. 2025-07-28 18:22:47 -03:00
docker-compose.yml first commit 2025-07-28 11:46:48 -03:00
Dockerfile feat: nem build 2025-08-05 21:19:40 -03:00
INSTRUMENTATION_SETUP.md fix: botão para compartilhar o qrcode no cel. 2025-07-28 18:22:47 -03:00
PACKAGES_TO_INSTALL.md fix: botão para compartilhar o qrcode no cel. 2025-07-28 18:22:47 -03:00
Program.cs feat: delete e es-py 2025-08-04 20:34:29 -03:00
QRRapidoApp.csproj feat: opacidade enquanto não selecionar o tipo. 2025-08-04 19:45:46 -03:00
QRRapidoApp.sln feat: deploy to production 2025-08-05 21:13:21 -03:00
README.md feat: opacidade enquanto não selecionar o tipo. 2025-08-04 19:45:46 -03:00
RUNTIME_FIX_APPLIED.md fix: botão para compartilhar o qrcode no cel. 2025-07-28 18:22:47 -03:00

QR Rapido - Gerador QR Code Ultrarrápido

.NET Docker 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

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:

# 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)

# Iniciar todos os serviços
docker-compose up -d

# Verificar logs
docker-compose logs -f qrrapido

4. Execução Local (Desenvolvimento)

# Restaurar dependências
dotnet restore

# Executar aplicação
dotnet run

# Ou com hot reload
dotnet watch run

5. Executar Testes

# 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

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

{
  "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

# 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

# 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

{
  "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 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.

stripe listen --forward-to https://localhost:52428/pagamento/stripewebhook --skip-verify