Proyecto personal
FisioWorks - API
PHP 8.2
Laravel 12
Sanctum
MySQL
· Laravel 12 · Sanctum · MySQL·
Es la API REST. que da servicio a FisioWorks, un sistema de gestión que diseñé a partir de las necesidades reales de una clínica de fisioterapia pequeña, recogiendo los requisitos directamente con su propietario. Hoy está en producción en el servidor del cliente.
Qué resuelve. Concentra toda la lógica de negocio: usuarios con roles múltiples (una misma persona puede ser administrador, terapeuta y paciente a la vez), pacientes, terapeutas, especialidades, tratamientos y salas. Lo más interesante vive en dos módulos. El cálculo de disponibilidad, que devuelve las horas libres de un terapeuta para un tratamiento concreto y detecta solapamientos de terapeuta y sala en cualquier intervalo. Y el sistema de bonos, que descuenta sesiones de forma transaccional al reservar una cita y las devuelve automáticamente si se cancela.
Autenticación y permisos. Tokens con Laravel Sanctum y control de acceso mediante middleware de roles propio, resuelto siempre en la API y nunca delegado al cliente.
Modo demo de solo lectura. Un endpoint público emite un token efímero con una ability específica de Sanctum; un middleware detecta ese token y rechaza cualquier método de escritura con un 403. Así cualquiera puede explorar el sistema completo sin poder tocar los datos. Se apoya en rate limiting por IP con named limiters, caducidad de tokens y purga programada de los caducados.
Por qué está separada del front. La API es deliberadamente independiente de la SPA que la consume, para que el mismo backend pueda alimentar en el futuro otros clientes —una app móvil o de escritorio— sin reescribir la lógica de negocio.
El repositorio público es únicamente demostrativo y no refleja el estado real del código en producción, para preservar la seguridad del sistema y los datos del cliente.
Es la API REST. que da servicio a FisioWorks, un sistema de gestión que diseñé a partir de las necesidades reales de una clínica de fisioterapia pequeña, recogiendo los requisitos directamente con su propietario. Hoy está en producción en el servidor del cliente.
Qué resuelve. Concentra toda la lógica de negocio: usuarios con roles múltiples (una misma persona puede ser administrador, terapeuta y paciente a la vez), pacientes, terapeutas, especialidades, tratamientos y salas. Lo más interesante vive en dos módulos. El cálculo de disponibilidad, que devuelve las horas libres de un terapeuta para un tratamiento concreto y detecta solapamientos de terapeuta y sala en cualquier intervalo. Y el sistema de bonos, que descuenta sesiones de forma transaccional al reservar una cita y las devuelve automáticamente si se cancela.
Autenticación y permisos. Tokens con Laravel Sanctum y control de acceso mediante middleware de roles propio, resuelto siempre en la API y nunca delegado al cliente.
Modo demo de solo lectura. Un endpoint público emite un token efímero con una ability específica de Sanctum; un middleware detecta ese token y rechaza cualquier método de escritura con un 403. Así cualquiera puede explorar el sistema completo sin poder tocar los datos. Se apoya en rate limiting por IP con named limiters, caducidad de tokens y purga programada de los caducados.
Por qué está separada del front. La API es deliberadamente independiente de la SPA que la consume, para que el mismo backend pueda alimentar en el futuro otros clientes —una app móvil o de escritorio— sin reescribir la lógica de negocio.
El repositorio público es únicamente demostrativo y no refleja el estado real del código en producción, para preservar la seguridad del sistema y los datos del cliente.