Disponible ahora · Leganés, Madrid

Juan David GilFull Stack Developer

Software full-stack con Java y React

Spring Boot en el backend, React y TypeScript en el frontend y pipelines de IA con Python. Cinco años dirigiendo turnos en tienda me enseñaron a construir software que se mide.

  • Java 17
  • Spring Boot 3
  • Spring Security
  • React 19
  • Next.js
  • TypeScript
  • PostgreSQL
  • Docker
  • Python
  • FastAPI
  • LangChain
  • MongoDB Atlas
  • Angular 17
  • GitHub Actions
  • Playwright

Proyectos

Cosas que he construido

¿Qué tecnología buscas? Marca una y te digo dónde la he usado.

01 / 04SaaS con IA y microservicios

DocuMind

Plataforma SaaS de análisis de documentos con IA. Los usuarios suben documentos, los interrogan mediante chat con RAG (LangChain + MongoDB vectorSearch) y colaboran en tiempo real dentro de un workspace multi-tenant. Microservicio de notificaciones en Node.js, panel admin en Angular 17 y procesamiento async con Celery.

Multi-tenant workspace

Cada empresa tiene su propio workspace aislado. El registro crea usuario + workspace en una sola transacción. JWT con roles por workspace (OWNER / ADMIN / MEMBER) y rol de plataforma PLATFORM_ADMIN.

  • Aislamiento por workspace_id en todos los queries
  • JWT access (60 min) + refresh (30 días)
  • Roles: OWNER · ADMIN · MEMBER · PLATFORM_ADMIN

FastAPI · Python · LangChain · MongoDB Atlas · Vue.js 3 · Angular 17 · Node.js · Celery · Redis · WebSocket · Docker · JWT

02 / 04Proyecto final con distinción

ProdSync

Aplicación B2B de gestión de proyectos para equipos de software: clientes, proyectos, tareas, horas y presupuestos con control de acceso por rol (RBAC). Interfaz oscura de cristal diseñada a medida, con dashboard tipo bento, tarjetas con datos reales y avatares generados. TFG de DAW con Spring Boot + Next.js.

JWT + RBAC

Login con JWT firmado (HS256, 24 h) enviado como Bearer en cada petición. Un middleware de Next.js protege las rutas privadas y por rol sin llamar al backend, y Spring Security lo vuelve a comprobar con @PreAuthorize. La pantalla de acceso incluye un recorrido por la app y una cuenta demo para quien la evalúa.

  • Middleware Next.js sin round-trip al backend
  • @PreAuthorize en cada endpoint
  • Roles: ADMIN · OPERATOR · USER
  • Sesión de 1 día o hasta cerrar el navegador

Spring Boot 3 · Next.js 15 · React 19 · TypeScript · Tailwind CSS 4 · PostgreSQL · Docker · JWT · TanStack Query · Zod · Playwright

03 / 04E-commerce y backoffice retail

KicksControl

E-commerce y backoffice de gestión de sneakers con lógica de operaciones retail real. Checkout transaccional con defensa en 3 capas contra overselling, KPIs de turno (Sell-Through, Días de Cobertura, Merma) y variantes de producto por talla y color.

E-commerce completo

Catálogo de sneakers con carrito persistente en servidor, checkout transaccional y pasarela de pago simulada con descarga de recibo en PDF. Sin localStorage: el estado del carrito se sincroniza entre pestañas y dispositivos.

  • Carrito como estado de servidor (TanStack Query)
  • Sincronización entre pestañas y dispositivos
  • Pasarela simulada + descarga de recibo PDF

Java 17 · Spring Boot 3.5 · Next.js 16 · React 19 · TypeScript · PostgreSQL 16 · Docker · JWT · TanStack Query v5 · Recharts · Playwright

04 / 04PWA de nutrición conectada a Google

DietApp

App de nutrición que uso a diario: menú intercambiable, registro de comidas y ajuste automático de cantidades para cuadrar kcal y proteína. Se conecta con Google sin servidor propio: trae pasos y peso del Fitbit desde Google Health, le envía las comidas del día y lee Google Calendar para saber si ese día trabajo. Instalable en Android e iOS, funciona sin conexión. JavaScript vanilla, sin build ni dependencias.

Fitbit ↔ Google Health, en los dos sentidos

Lee los pasos y el peso del Fitbit con la Google Health API v4 (la Fitbit Web API se apaga en octubre de 2026) y le devuelve las comidas registradas con sus kcal y macros. Al abrir la app o recuperar conexión se sincronizan solos los últimos días si el token sigue vivo.

  • Pasos por dailyRollUp y peso por día local
  • Comidas como nutrition-log con su franja y hora
  • Envío idempotente: firma por día, borra y recrea si cambia

JavaScript · PWA · Service Worker · OAuth 2.0 · Google Health API · Google Calendar API · Google Identity Services · Open Food Facts · tesseract.js · Offline-first

Sobre mí

Cinco años midiendo turnos en tienda. Ahora construyo el software que los mide.

Desde 2019 soy Shift Leader en Foot Locker, en Leganés: coordino equipos de ocho a doce personas en turnos de alta demanda, sigo las ventas de cada hora y decido qué reponer antes de que se agote una talla. Ahí aprendí lo que hoy busco en el software: que cada número sirva para decidir algo. Por eso KicksControl mide sell-through, días de cobertura y merma.

Me formé en Desarrollo de Aplicaciones Web en CESUR, con una nota final de 7,94 y el proyecto final ProdSync con mención Distinción, y ahora curso Ingeniería Informática en la UNED. En Softcode trabajé con Java 17, Spring Boot y React integrando una aplicación interna con un sistema legacy en producción. Busco un equipo donde seguir aprendiendo y aportar.

Trayectoria

De la tienda al código

El stack con el que trabajo hoy:

stack.ts
// Lo que uso a diarioexport const stack = {  backend: ["Java 17", "Spring Boot 3", "Spring Security", "JPA"],  frontend: ["TypeScript", "React 19", "Next.js", "Angular 17"],  datos: ["PostgreSQL", "MongoDB Atlas", "Redis"],  ia: ["Python 3.12", "FastAPI", "LangChain", "RAG"],  devops: ["Docker", "GitHub Actions", "Git Flow", "Linux"],  testing: ["JUnit 5", "Mockito", "Playwright"],  equipo: ["Scrum", "Kanban"],};

Experiencia

  • Desarrollador Full Stack (prácticas), Softcodenov 2025 – mar 2026

    APIs REST con Java 17 y Spring Boot sobre PostgreSQL con JPA e Hibernate. Integración de una web interna con un sistema legacy de presupuestos en producción. Interfaces con React, TypeScript y Next.js; Git Flow, revisión de código y Docker.

  • Shift Leader, Foot Locker Leganésnov 2019 – hoy

    Equipos de 8 a 12 personas en turnos de alta demanda. KPIs comerciales, incidencias en tiempo real y formación de nuevos compañeros.

Formación

  • Grado en Ingeniería Informática, UNEDoct 2026 – hoy

    En curso. Acceso por traslado de expediente desde la UPM, con reconocimiento de créditos en trámite.

  • Técnico Superior en DAW, CESURsep 2024 – may 2026

    Nota final 7,94. Proyecto final (ProdSync) con mención Distinción.

  • Grado en Ing. de Sistemas de Información, UPM2016 – 2021

    108 créditos ECTS superados, trasladados a la UNED.

Idiomas y certificaciones

  • Españolnativo
  • InglésB2

    Uso diario en documentación técnica.

  • Claude Code 101Anthropic, 2026
  • Introduction to Claude CoworkAnthropic, 2026

Contacto

¿Construimos algo juntos?