Proyectos
Una colección de mi trabajo y proyectos personales
Desarrollado con Remix y la API GraphQL de Shopify. Plataforma de comercio electrónico para Grupo Loureiro (los datos fueron obtenidos mediante web scraping por motivos ajenos a mi persona). El código es de código abierto.

Un reproductor de música de escritorio moderno y de alto rendimiento construido con tecnologías de vanguardia. Esta aplicación combina la potencia de Rust con la flexibilidad de React para ofrecer una experiencia de escritorio nativa para gestionar y disfrutar de tu biblioteca musical local. Características Principales: Gestión completa de biblioteca organizada por artistas, álbumes, géneros y listas de reproducción personalizadas Reproducción fluida de audio local compatible con múltiples formatos Panel de estadísticas que rastrea hábitos de escucha y canciones más reproducidas Integración con Last.fm para scrobbling y enriquecimiento de metadatos Soporte de letras integradas con integración de API externa Controles nativos de sesión multimedia para integración con el sistema Interfaz moderna y responsiva con soporte de temas claro/oscuro Exploración de música basada en carpetas Aspectos Técnicos Destacados: Construido con Tauri v2 para rendimiento nativo y tamaño de binario reducido Frontend impulsado por React 19 con TanStack Router para enrutamiento Estilizado con TailwindCSS v4 y biblioteca de componentes shadcn/ui Backend en Rust que maneja decodificación de audio (Symphonia), reproducción (CPAL) y extracción de metadatos Base de datos SQLite para gestión eficiente de la biblioteca Gestión de estado con Zustand Desarrollo con tipado seguro usando TypeScript

Una landing page con integración de blog para una PYME con sede en Cuba, con operaciones en Panamá y España, centrada en la importación de productos agrícolas y tecnología.

Un catálogo de varias tiendas con personalización unica para cada uno con control de branding y otros aspectos. Diseñado y pensado para la integración con Whatsapp. (Actualmente en desarollo, funcional pero con arreglos pendientes). Moderna y full-stack desarrollada con Next.js 16 que permite a las empresas gestionar múltiples tiendas online desde un único panel de administración. Incluye un sistema completo de gestión de productos con variantes, filtrado dinámico por categorías, funcionalidad de carrito de compras y lista de deseos, y temas personalizables por tienda. La plataforma utiliza tRPC para APIs con tipado seguro, Prisma ORM para la gestión de base de datos, y MinIO para almacenamiento escalable de medios. Construida con TypeScript, React 19 y Tailwind CSS, ofrece tanto una interfaz de administración intuitiva para la gestión de tiendas como un escaparate responsivo orientado al cliente con capacidades de búsqueda e integración con WhatsApp para comunicaciones con clientes. Tecnologías Clave: Next.js 16, TypeScript, React 19, tRPC, Prisma, PostgreSQL, Better Auth, MinIO, Tailwind CSS, Radix UI, React Query, Zod
Una aplicación Next.js para crear documentos a partir de plantillas predefinidas almacenadas en PocketBase. Los usuarios pueden completar formularios dinámicos generados a partir de un esquema JSON, previsualizar el HTML resultante (compilado con Handlebars) y generar o ver archivos PDF almacenados en caché. Las imágenes se cargan y almacenan como recursos en PocketBase. Se implementan validaciones sólidas tanto del lado del cliente como del servidor. Tabla de contenido Descripción general Características principales Pila tecnológica Estructura del proyecto Arquitectura principal Modelo de datos (PocketBase) Rutas de la API Flujos de frontend Especificación del esquema de plantillas Validaciones Generación y almacenamiento en caché de PDF Flujo de carga de imágenes Autenticación y enrutamiento Desarrollo local Cómo agregar una nueva plantilla Limitaciones conocidas y mejoras futuras Índice de archivos Descripción general Este proyecto evolucionó de un concepto inicial de editor GrapeJS + Appwrite a un sistema optimizado centrado en: Uso de plantillas predefinidas almacenadas en PocketBase Generación de formularios dinámicos a partir de un esquema JSON Compilación de plantillas con Handlebars (#if, #each) para que las secciones opcionales se muestren solo cuando existan datos Generación y almacenamiento en caché de archivos PDF bajo demanda mediante Puppeteer Validaciones sólidas para tipos de entrada, formato de correo electrónico, rangos numéricos e imágenes El código base actual se centra en PocketBase como backend y ya no utiliza Appwrite en las rutas de tiempo de ejecución. El README original hace referencia a Appwrite y GrapeJS; utilice este documento actualizado en adelante. Características principales Centro de plantillas para cada ID de plantilla con: Lista de documentos generados Creación de nuevos documentos mediante un formulario Acciones de edición y eliminación por documento Haga clic en una tarjeta de documento para abrir/ver su PDF (generar si no está en caché) Representación dinámica de formularios a partir del esquema con: Compatibilidad con un formato de esquema de matriz "fields" y un esquema de objeto plano heredado Tipos de campo: texto, área de texto, número, fecha, selección, imagen, matriz (grupo repetitivo) Validaciones del lado del cliente (obligatorio, verificación de tipo, patrón, mínimo/máximo, longitud mínima/máxima, correo electrónico, opciones de selección, tamaño de la matriz) Mensajes de error en tiempo real y botón de envío deshabilitado hasta que sea válido Carga de imágenes: Validación del lado del cliente de MIME y tamaño de archivo (configurable) Validación del lado del servidor para aplicar tipos de imagen y límites de tamaño Imágenes cargadas almacenadas en los recursos de PocketBase Generación de PDF: PDF en formato A4 mediante Puppeteer con printBackground Almacenamiento en caché en los recursos de PocketBase por documento; Reutilización en vistas posteriores Renderizado condicional (Handlebars): Campos opcionales envueltos en bloques {{#if}} Arrays renderizados con {{#each}}; omitidos cuando están vacíos Tecnologías utilizadas Framework: Next.js 15 (App Router) + React 19 Lenguaje: TypeScript Estilo/Interfaz de usuario: Tailwind CSS + componentes shadcn/ui Backend: PocketBase (autohospedado) PDF: Puppeteer Plantillas: Handlebars en el cliente para la previsualización