
Descripción
Contexto general
Sistema de reconocimiento de lenguaje de señas (abecedario español) que detecta gestos de la mano en tiempo real directamente en el navegador usando MediaPipe Hands de Google, sin enviar imágenes al servidor. El frontend en React 19 + Vite 8 + Tailwind CSS v4 incluye galería del abecedario, práctica con cámara (modo específico y libre con niveles guiados), autenticación con roles y dark mode. El backend en Spring Boot 4 (Java 25) maneja autenticación con BCrypt, gestión de imágenes de referencia (CRUD) y almacenamiento en disco, con migraciones Flyway y soporte H2 (dev) / PostgreSQL (prod). Clasificador de gestos con heurísticas geométricas sobre 21 landmarks 3D, detector de movimiento para letras J y Z, y estabilidad por N frames consecutivos.

Motivación
Por qué lo construí
Facilitar el aprendizaje del abecedario de lenguaje de señas mediante una herramienta interactiva que usa la cámara web para reconocer gestos en tiempo real.
Realizar el reconocimiento completamente en el navegador con MediaPipe Hands, sin enviar imágenes al servidor para preservar la privacidad del usuario.
Ofrecer dos modos de práctica: específico (una letra a la vez) y libre con niveles guiados progresivos (Básico → Experto) que avanzan solo con aciertos.
Gestionar imágenes de referencia del abecedario con un panel administrativo (rol ADMIN) que permite CRUD completo y almacenamiento en disco.
Características
Lo que destaca
Reconocimiento en el navegador con MediaPipe HandLandmarker — 21 landmarks 3D por mano, sin envío de imágenes al servidor.
Clasificador de gestos con heurísticas geométricas: estado de dedos (extended, folded, curved), posición del pulgar, orientación de la mano y separación entre dedos para distinguir 24 letras estáticas.
Detector de movimiento para letras J y Z con trayectoria del dedo guía y detección de cambios de dirección.
Frontend React 19 + Vite 8 con React Router 7 (lazy routes, protected routes), cache compartido de referencias con hook a nivel módulo y dark mode con persistencia en localStorage.
Backend Spring Boot 4 (Java 25) con Spring Data JPA, migración única Flyway (V1__init.sql), H2 en modo PostgreSQL para dev y PostgreSQL para prod, BCrypt para contraseñas.
Práctica guiada con 5 niveles progresivos (Básico, Intermedio, Avanzado, Complejo, Experto), barra de progreso por nivel y imagen de referencia automática.