Generador de códigos QR con logo · C# · Blazor · ASP.NET Core
┌──────────────────────────────────────────────┐ 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 │ │ │ └──────────────────────────────────────────────┘ └──────────────────────────────────────────────┘
| Capa | Tecnología | Propósito |
|---|---|---|
| Lenguaje | C# | Unifica todo el proyecto |
| Runtime | .NET 9.0 | SDK instalado y listo ✅ |
| Frontend | Blazor WebAssembly | Componentes C# compilados a WASM |
| API | ASP.NET Core Web API | Endpoints REST ligeros |
| QR | QrCode.Net | Generación QR puro en C# |
| Imágenes | SixLabors.ImageSharp | Overlay de logo, redimensionado, PNG |
| Deploy | Cloudflare Pages + VPS | Frontend gratis, API desde $5–10/mes |
POST /api/qr/generate
Genera un código QR con las opciones especificadas y opcionalmente un logo superpuesto.
application/json{
"content": "https://ejemplo.com",
"size": 500,
"foreground": "#000000",
"background": "#FFFFFF",
"errorCorrection": "H",
"logoBase64": "data:image/png;base64,iVBORw0KGgo...",
"logoSize": 120
}
| Campo | Tipo | Default | Descripción |
|---|---|---|---|
content | string | — | URL o texto a codificar (requerido) |
size | int | 400 | Tamaño en píxeles (200–2000) |
foreground | string | "#000000" | Color de los módulos QR |
background | string | "#FFFFFF" | Color de fondo |
errorCorrection | string | "H" | L (7%), M (15%), Q (25%), H (30%) |
logoBase64 | string | null | Imagen del logo en base64 (data URI) |
logoSize | int | size × 0.25 | Tamaño del logo en píxeles |
200 OK · Content-Type: image/png — cuerpo binario de la imagen PNG.400 si falta content, 413 si el logo excede 2MB.GET /api/health
{ "status": "ok", "version": "1.0.0" }
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.
Paso a paso de cómo se genera el QR final:
QrCode.NetLa API no guarda nada entre peticiones. Cada POST /api/qr/generate recibe todos los datos y devuelve la imagen. Zero configuración para escalar.
| Componente | Destino | Costo | Estado |
|---|---|---|---|
| Spec HTML | innovaqr-spec.pages.dev | Gratis | ✅ Desplegado |
| Frontend (Blazor WASM) | Cloudflare Pages | Gratis | ⏳ Pendiente |
| API (ASP.NET Core) | Railway / Fly.io / VPS | Desde $5–10 USD/mes | ⏳ Pendiente |
QrGenerator.cs
Pendiente
LogoOverlay.cs
Pendiente
POST /api/qr/generate
Pendiente
GET /api/health
Pendiente