Next.js + Clerk + Convex
Next.js y TypeScript presentan la interfaz. Clerk gestiona identidad; Convex conserva herramientas, préstamos y miembros y verifica permisos en cada operación. El cliente no decide quién es propietario ni administrador.
LendLoop / Full-stack
Desarrollé una plataforma para publicar herramientas, solicitar préstamos por fechas y gestionar su devolución. La usé como ejercicio para conectar una experiencia de producto con permisos de backend, automatizaciones confiables y manejo seguro de archivos.

01 / Producto
El catálogo público muestra únicamente nombres y categorías. Después de iniciar sesión, una persona puede crear publicaciones, consultar disponibilidad y solicitar fechas. El propietario aprueba o rechaza; los participantes registran la devolución. Un administrador puede moderar publicaciones y distinguir prestadores de confianza.
Elegí una interfaz de catálogo con búsqueda, categorías y estados visibles. Separé mis publicaciones, mis solicitudes y las solicitudes recibidas para que cada acción tenga un lugar claro.
02 / Arquitectura
Next.js y TypeScript presentan la interfaz. Clerk gestiona identidad; Convex conserva herramientas, préstamos y miembros y verifica permisos en cada operación. El cliente no decide quién es propietario ni administrador.
Los cambios de un préstamo generan eventos en una cola transaccional. n8n procesa notificaciones simuladas y recordatorios diarios de vencimiento. Incluí reintentos, registro de errores e idempotencia para evitar duplicados.
03 / Ciberseguridad
El servidor valida el contenido, decodifica y convierte JPEG, PNG o WebP estáticos a WebP optimizado. Limita tamaño y resolución y elimina metadatos. Convex almacena solo el resultado procesado; la lectura requiere autenticación y el reemplazo exige ser propietario.
Las cargas usan tickets de un solo uso, cuotas y una firma del procesador. El backend vuelve a comprobar el permiso antes de asociar el archivo a una publicación.
La capa de datos usa las consultas estructuradas de Convex y valida argumentos e identificadores antes de realizar operaciones. Los textos de usuario se muestran como texto, sin ejecutarlos como HTML.
04 / Verificación
Verifiqué además la carga autenticada de un JPEG, su lectura como WebP, el rechazo de un archivo falso, la denegación de acceso anónimo y la eliminación. El circuito Convex–n8n entregó tres notificaciones firmadas y evitó duplicados al repetir un evento. Las pruebas de integración del préstamo utilizaron identidades sintéticas de desarrollo.

05 / Alcance
LendLoop es un desarrollo experimental realizado como prueba técnica. No tiene usuarios reales ni métricas de adopción. Las notificaciones son registros simulados: no se envían correos. La demo en memoria está separada de la aplicación autenticada con persistencia.
Queda pendiente el recorrido manual con dos cuentas reales de Clerk. Para producción añadiría alojamiento estable, observabilidad, cuotas globales, paginación, políticas de retención y reconciliación de archivos huérfanos. Estas limitaciones están documentadas junto con las decisiones de seguridad.