← Proyectos
Web

QR Studio

Generador de códigos QR que funciona entero en el navegador y sin conexión. Ocho tipos de QR, diseño con colores, degradados y logo, y un verificador que lee cada QR que generas y lo pone a prueba impreso pequeño, desenfocado y con poca luz. Además, QR artístico con tu foto, un lector que avisa de enlaces fraudulentos antes de abrirlos, lotes desde CSV, PDF imprimible a tamaño exacto e historial cifrado opcional. Empezó como un proyecto para aprender.

QR Studio con un QR de abdell.dev en morado, puntos redondeados y el logo ABR en el centro, y el veredicto Escanea bien con las cuatro pruebas superadas
Un QR artístico con un paisaje de montañas al atardecer fundido en sus módulos, con el veredicto Escanea bien en el móvilEl lector seguro con un enlace a paypa1-login.xyz marcado como Peligro, por imitar a una marca, no usar HTTPS y tener una terminación poco habitualUna hoja A4 de etiquetas con doce QR, de Mesa 1 a Mesa 12, y marcas de corte
conexiones externas
0
conexiones externas
pruebas de escaneo por QR
4
pruebas de escaneo por QR
tests
474
tests
idiomas
3
idiomas

Qué hace

  • Ocho tipos de QR. Enlace, texto, correo, teléfono, SMS, Wi-Fi, contacto y evento de calendario.
  • Diseño. Seis estilos de punto, colores sólidos o degradados, esquinas personalizables y logo central. La corrección de errores sube sola al poner un logo, y avisa si el contraste es bajo.
  • Comprueba que escanea. Cada vez que cambias algo, lee el QR con un lector real y lo prueba impreso pequeño, desenfocado y con poca luz. Te dice si escanea bien, si es frágil o si no se lee, y a partir de qué tamaño imprimirlo.
  • QR artístico. Funde una foto con el QR y busca sola la intensidad que deja ver más foto sin dejar de escanear.
  • Lector seguro. Lee un QR con la cámara o una imagen y enseña adónde lleva antes de abrir nada, con avisos de marcas imitadas, dominios raros, acortadores o descargas de programas.
  • Imprimir y en lote. PDF a tamaño exacto (solo el QR, tarjeta Wi-Fi u hoja de pegatinas) y muchos QR a la vez desde un CSV o JSON, en ZIP o en una hoja de etiquetas.
  • Nada sale del navegador. Un indicador en la cabecera cuenta en directo las conexiones externas, y debería marcar siempre 0. El historial está apagado por defecto y, si lo activas, puede ir cifrado con una frase de paso.

Cómo está hecho

Capas que no se mezclan

Nuxt 4 en modo solo cliente, con cuatro capas: dominio, aplicación, infraestructura y presentación. El dominio y los casos de uso no conocen Vue ni ninguna librería. qr-code-styling, jsQR y el canvas solo aparecen en infraestructura.

Un lector para comprobar lo que generas

jsQR decodifica el QR que se acaba de dibujar y comprueba que el texto leído es exactamente el que pusiste. Después lo degrada (lo encoge, lo desenfoca, le baja el contraste y le mete ruido) y lo vuelve a leer. Todo ocurre en un Web Worker.

Sin dependencias para los archivos

El PDF, el ZIP y el cifrado del historial no usan librerías: un escritor de PDF propio, un ZIP con CompressionStream y Web Crypto con PBKDF2 y AES-GCM.

Problemas que resolví

  • QR normales marcados como frágiles. Los primeros veredictos fallaban con QR negros sobre blanco. Faltaba la zona blanca alrededor, y jsQR es muy sensible a los píxeles por módulo. Lo recalibré con 8 contenidos a 10 tamaños.
  • Un fallo en jsQR. La tabla de la versión 23 traía un 74 donde va un 78, y esos QR salían como ilegibles. Lo arreglé con un parche.
  • QR artístico lento. Componer a 2048 px tardaba unos 10 segundos y el modo Auto unos 14. Ahora tardan unos 0,35 y 3 segundos.
  • Trucos de phishing. La revisión encontró enlaces que se colaban, como paypa1-login.com o java\nscript:. Ahora los detecta.

Stack

Nuxt 4Vue 3TypeScriptTailwind CSSqr-code-stylingqrcode-generatorjsQRWeb WorkersWeb CryptoIndexedDBCompressionStreamPWAVitestGitHub Actions