Joan Llorens

Desarrollador Full Stack · React · Node.js · TypeScript
✉ j.llorens@uniogestio.com LinkedIn GitHub
⬇ Descargar CV (PDF)
Portfolio técnico de proyectos personales activos. Combinan stack moderno (React 19, React Native, TypeScript, Node.js, PostgreSQL, Drizzle ORM) con resolución de problemas reales: rendimiento, internacionalización, GIS desktop y móvil, geofencing, algoritmos y arquitectura full stack en producción.
Patrimonio Europeo
patrimonio-europeo.netlify.app
SPA full stack para divulgación de patrimonio cultural europeo. ~258.000 monumentos catalogados, ~30.000 georreferenciados con componente GIS interactivo.
Frontend
  • React 19 + Vite, lazy loading por ruta
  • react-leaflet con clustering por viewport
  • Filtros geográficos en cascada y filtros de contenido excluyentes
  • Internacionalización a 8 idiomas con react-i18next
  • PWA con vite-plugin-pwa, cache strategies diferenciadas (7d / 30d / 1h)
  • Context API para estado global, sin librerías externas
Backend
  • Express + PostgreSQL (Neon serverless) + Drizzle ORM
  • Autenticación JWT con interceptor cliente y limpieza 401
  • Integración Wikidata SPARQL para enriquecimiento multilingüe
  • Endpoints geográficos optimizados (~258k registros)
  • Despliegue: Netlify (front) + Render (back)
Problemas resueltos en producción
React 19 Vite Leaflet react-i18next Express PostgreSQL Drizzle ORM PWA Wikidata SPARQL
Agenda_Geoloc
github.com/LlorensGuillaumes/Agenda_Geoloc
App móvil de agenda con alarmas por hora, por ubicación (geofencing) y combinables. Sistema de amigos privacy-by-design: una persona puede crear alarmas en la agenda de otra sin que se comparta nunca la ubicación, solo la definición.
Mobile
  • React Native + Expo SDK 54 (managed) con expo-router
  • NativeWind v4 (Tailwind para RN) y i18n a 3 idiomas (es/en/ca)
  • react-native-maps + expo-location para selección y geofencing
  • Zustand (auth) + React Query (server cache) + SecureStore (token)
  • react-hook-form + zod resolver para validación de formularios
  • expo-notifications para alarmas locales y triggers por ubicación
Backend & arquitectura
  • Node 20 + Express + Better-Auth (bearer tokens)
  • Drizzle ORM + Zod sobre Turso (libSQL/SQLite serverless)
  • Monorepo pnpm workspaces con paquetes compartidos (@agenda/shared con Zod schemas, @agenda/db con migraciones)
  • API REST con validación end-to-end de tipos compartidos entre cliente y servidor
  • Despliegue API en Render; mobile en development build local
Decisiones técnicas destacables
React Native Expo TypeScript NativeWind Zustand React Query Express Better-Auth Drizzle ORM Turso Zod pnpm workspaces
Rumicup
github.com/LlorensGuillaumes/Rumicup
Solver de Rummikub en TypeScript. ~544 líneas con algoritmo de backtracking y siete heurísticas estratégicas. Construido en un fin de semana.
Algoritmo
  • Backtracking sobre el espacio de jugadas válidas
  • 7 heurísticas estratégicas para poda de ramas
  • Validación de combinaciones (escaleras y grupos)
  • Optimización de orden de exploración
Stack
  • TypeScript + React frontend (interfaz interactiva)
  • Hono framework + Drizzle ORM + SQLite (backend)
  • Tests unitarios con Vitest (API equivalente a Jest)
  • Build con Vite y despliegue separado front/back
TypeScript React Hono Drizzle ORM SQLite Vitest Algoritmos

Otros proyectos

AgendaDespeses
Gestor de gastos compartidos familiares.
  • React + TypeScript + Tailwind
  • Firebase Authentication y Firestore
  • Backend Render para evitar plan Blaze
  • Reparto automatizado de gastos por categorías
React TypeScript Firebase Tailwind
Igualda15
App responsive con Firebase como backend.
  • React + TypeScript + Tailwind
  • Firebase Authentication y Firestore
  • UI responsive optimizada para móvil
  • Despliegue gratuito serverless
React TypeScript Firebase Tailwind

Resumen técnico

Frontend web
React 19, Vite, TypeScript, react-leaflet, react-i18next, Tailwind, PWA
Mobile
React Native, Expo SDK 54, expo-router, NativeWind v4, react-native-maps, expo-location, expo-notifications
Estado y forms
Zustand, React Query, Context API, react-hook-form, Zod
Backend
Node.js, Express, Hono, JWT, Better-Auth, REST APIs
Bases de datos
PostgreSQL (Neon serverless), Turso (libSQL), Drizzle ORM, MongoDB, SQLite, Firebase Firestore
Testing
Vitest, Jest (proyectos anteriores)
DevOps / Deploy
pnpm workspaces (monorepo), Netlify, Render, Firebase Hosting, IIS, GitHub Actions
Datos / GIS
Leaflet, Wikidata SPARQL, OpenData regionales, geofencing, normalización geográfica
Patrones
Refactorización en proyectos legacy (jQuery/Knockout → React, .NET MVC → SPA), monorepo con paquetes compartidos, privacy-by-design