InnovaQR

Generador de códigos QR con logo · C# · Blazor · ASP.NET Core

⚡ .NET 9 🦋 Blazor WASM ◇ ASP.NET Core ◉ Sin DB 🔮 Stateless
🏗️

Arquitectura

┌──────────────────────────────────────────────┐       POST /api/qr/generate       ┌──────────────────────────────────────────────┐
│  Blazor WebAssembly                       │  ───────────────────────────────→  │  ASP.NET Core API                    │
│  (Frontend)                                │  ←───────────────────────────────  │  (Backend)                             │
│                                            │                                       │
│  · UI con componentes Blazor               │                                       │  · Generación QR (QrCode.Net)       │
│  · Formulario + subida de logo             │                                       │  · Logo overlay (ImageSharp)        │
│  · Previsualización en vivo                │                                       │  · Sin DB · Sin ORM · Stateless     │
│  · Descarga PNG                            │                                       │                                      │
└──────────────────────────────────────────────┘                                       └──────────────────────────────────────────────┘

🔄 Flujo de una petición

1 URL + logo → 2 Ajustar colores / tamaño → 3 POST /api/qr/generate → 4 Generar QR (H) → 5 Superponer logo → 6 Descargar PNG
🧱

Stack Tecnológico

CapaTecnologíaPropósito
LenguajeC#Unifica todo el proyecto
Runtime.NET 9.0SDK instalado y listo ✅
FrontendBlazor WebAssemblyComponentes C# compilados a WASM
APIASP.NET Core Web APIEndpoints REST ligeros
QRQrCode.NetGeneración QR puro en C#
ImágenesSixLabors.ImageSharpOverlay de logo, redimensionado, PNG
DeployCloudflare Pages + VPSFrontend gratis, API desde $5–10/mes
📡

API REST

2 endpoints

◉ POST /api/qr/generate

Genera un código QR con las opciones especificadas y opcionalmente un logo superpuesto.

Request · application/json

JSON
{
  "content":         "https://ejemplo.com",
  "size":           500,
  "foreground":     "#000000",
  "background":     "#FFFFFF",
  "errorCorrection": "H",
  "logoBase64":      "data:image/png;base64,iVBORw0KGgo...",
  "logoSize":       120
}
CampoTipoDefaultDescripción
contentstring—URL o texto a codificar (requerido)
sizeint400Tamaño en píxeles (200–2000)
foregroundstring"#000000"Color de los módulos QR
backgroundstring"#FFFFFF"Color de fondo
errorCorrectionstring"H"L (7%), M (15%), Q (25%), H (30%)
logoBase64stringnullImagen del logo en base64 (data URI)
logoSizeintsize × 0.25Tamaño del logo en píxeles
📤
Response: 200 OK · Content-Type: image/png — cuerpo binario de la imagen PNG.
Errores: 400 si falta content, 413 si el logo excede 2MB.

● GET /api/health

JSON
{ "status": "ok", "version": "1.0.0" }
🎨

Funcionalidades

v1.0 — MVP

✅ Input de URL / texto
✅ Subir logo (PNG/JPG)
✅ Nivel de corrección (L/M/Q/H)
✅ Tamaño del QR (200–2000 px)
✅ Color foreground / background
✅ Vista previa en vivo
✅ Descargar como PNG
✅ Responsive (móvil incluido)
✅ Sin registro · Sin cuenta

v2.0 — Próximas

⏳ Exportar SVG vectorial
⏳ Drag & drop de logo
⏳ QR con formas personalizadas
⏳ Gradientes en foreground
⏳ Generación por lote (CSV)
⏳ Acortador de URLs
⏳ Modo oscuro / claro
⏳ Historial (DB opcional)
💡

Notas Técnicas

◉ Corrección de Error — Nivel H

Los QR tienen 4 niveles de corrección. Usamos nivel H (el más alto, 30% de redundancia) para que el logo en el centro no impida la lectura.

  • L = ~7% redundancia
  • M = ~15% redundancia
  • Q = ~25% redundancia
  • H = ~30% redundancia ← este usamos

◇ Logo Overlay — Algoritmo

Paso a paso de cómo se genera el QR final:

  • Generar QR con QrCode.Net
  • Redimensionar logo al tamaño correcto
  • Calcular posición central del QR
  • Superponer logo con fondo blanco
  • Exportar como PNG

🔮 Sin Estado (Stateless)

La API no guarda nada entre peticiones. Cada POST /api/qr/generate recibe todos los datos y devuelve la imagen. Zero configuración para escalar.

🚀

Deploy

ComponenteDestinoCostoEstado
Spec HTMLinnovaqr-spec.pages.devGratis✅ Desplegado
Frontend (Blazor WASM)Cloudflare PagesGratis⏳ Pendiente
API (ASP.NET Core)Railway / Fly.io / VPSDesde $5–10 USD/mes⏳ Pendiente
📋

Checklist de Implementación

☐ Scaffold del proyecto .NET (api + frontend) Pendiente
☐ Implementar QrGenerator.cs Pendiente
☐ Implementar LogoOverlay.cs Pendiente
☐ Endpoint POST /api/qr/generate Pendiente
☐ Endpoint GET /api/health Pendiente
☐ Pruebas unitarias de generación QR Pendiente
☐ Blazor Frontend — formulario Pendiente
☐ Blazor Frontend — preview Pendiente
☐ Blazor Frontend — descarga Pendiente
☐ Deploy API Pendiente
☐ Deploy Frontend Pendiente
☐ Prueba integral Pendiente