Aplicación monolítica Spring Boot 2.6.7 con Thymeleaf para gestionar residentes, personal, familiares, actividades y cuidados. Diseño modernizado (hero en portada, tarjetas, pie unificado) y favicon sanitario (heart-pulse) en azul/teal.
- Desarrollo local: rama
master(localhost) - Despliegue: rama
main(Railway) - Procedimiento:
- Trabaja/commitea en
master git checkout main && git merge master- Asegura privacidad (sin credenciales en texto plano)
git push origin main(despliegue se dispara en Railway)
- Trabaja/commitea en
La app usa MySQL mediante variables de entorno con valores por defecto solo para local:
MYSQL_URL(p.ej. jdbc:mysql://HOST:PUERTO/familiaplus?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true)MYSQL_USERMYSQL_PASSWORDPORT(lo inyecta Railway automáticamente)
Archivo: src/main/resources/application.properties (sin secretos en la rama main). Existe application-production.properties para PostgreSQL, pero el conector actual del proyecto usa MySQL; recomendamos MySQL también en producción para evitar refactor.
Requisitos: Java 11+, Maven 3.6+, MySQL 8.0
- Clonar y entrar en el proyecto
git clone https://github.com/Al-issawi/projectFamiliaPlus-main.git
cd projectFamiliaPlus-master- Crear base de datos
CREATE DATABASE familiaplus CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- Variables de entorno opcionales (si no usas los valores por defecto)
# Windows PowerShell
$env:MYSQL_URL="jdbc:mysql://localhost:3306/familiaplus?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"
$env:MYSQL_USER="root"
$env:MYSQL_PASSWORD="<tu_password>"- Arrancar
mvn spring-boot:runApp en http://localhost:9000
Este repo incluye railway.toml:
- build:
mvn clean package -DskipTests - start:
java -Dserver.port=$PORT -jar target/*.jar
Pasos:
- En Railway, crea un nuevo proyecto y conecta el repo de GitHub.
- En el servicio web, define variables de entorno:
MYSQL_URL→ URL JDBC de tu MySQL gestionado por Railway u otro proveedorMYSQL_USERMYSQL_PASSWORD
- Asegúrate de que el servicio expone el puerto
$PORT(Railway lo inyecta). No definas un puerto fijo. - Branch de deploy:
main. Cada push amainredepliega. - Pulsa “Deploy” o “Redeploy” y revisa logs.
Comprobación en logs: debería mostrarse algo como
Conexión MySQL OK - Producción- mensajes de inicialización de base de datos (DatabaseInitializer) si los scripts se ejecutan.
Si prefieres PostgreSQL en Railway, hace falta un pequeño ajuste en ConexionBBDD para usar DATABASE_URL y el driver org.postgresql.Driver. Podemos realizarlo si lo solicitas.
- Repo conectado en Railway apuntando a rama
main -
MYSQL_URL,MYSQL_USER,MYSQL_PASSWORDconfigurados - Esquema MySQL importado una vez (
src/main/resources/database_init_mysql.sql) - Push a
mainrealizado - Logs muestran “Conexión MySQL OK - Producción”
src/main/java/bbdd/JDBC helper e inicializacióncontrollers/Controladores Spring MVCmodel/Modelos con acceso JDBCinicio/Clase principal Spring Boot
src/main/resources/templates/Vistas Thymeleaf (index, actividades, sobreNosotros, menú, personal, familiar, contacto)static/CSS/JS/media (incluyefavicon.svgycss/main.css)application.properties(usa env vars)
railway.tomlConfiguración de deploypom.xmlDependencias y plugin Spring Boot
| Usuario | Contraseña | Rol |
|---|---|---|
| admin | admin123 | administrador |
| personal1 | pass123 | personal |
| familiar1 | pass123 | familiar |
- Unificación de títulos
<title>y favicon sanitario (azul/teal) - Rediseño de páginas y pie unificado
- Consolidación de estilos en
css/main.css - Privacidad: uso de variables de entorno para credenciales
- Flujo de ramas:
master(local) →main(deploy)
- Fork
- Rama de feature:
git checkout -b feature/mi-cambio - Commits y push
- Pull Request
GitHub Issues o equipo de desarrollo.# FAMILIA-PLUS - Sistema de Gestión para Residencias
Hey! Este es nuestro proyecto final para el curso de DAW. Desarrollamos un sistema web para gestionar residencias de ancianos.
Básicamente, permite administrar toda la información de una residencia: los residentes, el personal que trabaja allí, sus familiares, las actividades que se realizan y llevar un registro de los cuidados médicos. La idea es facilitar el trabajo del día a día en este tipo de centros.
Decidimos usar:
- Backend: Java con Spring Boot (versión 2.6.7)
- Base de datos: MySQL 8.0
- Frontend: HTML, CSS, JavaScript y Thymeleaf para las plantillas
- Otras herramientas: Maven para gestión de dependencias, Git para control de versiones y Railway para el deploy
Creamos 6 tablas principales para organizar toda la información:
- usuario → Los diferentes tipos de usuarios (administradores, personal, familiares)
- residente → Información personal de cada residente
- personal → Datos de empleados y trabajadores
- familiar → Contactos familiares de los residentes
- cuidado → Historial de cuidados y tratamientos médicos
- actividad → Actividades programadas (ejercicios, talleres, etc.)
- Java 11 (o más reciente)
- MySQL 8.0
- Maven 3.6+
-
Clona el repo:
git clone https://github.com/Al-issawi/projectFamiliaPlus-main.git cd projectFamiliaPlus-master -
Configura MySQL: Primero crea la base de datos:
mysql -u root -p CREATE DATABASE familiaplus CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
Inicializa las tablas: Ejecuta nuestro script que crea todo automáticamente:
mysql -u root -p < setup_simple.sql -
Ajusta las credenciales: Edita el archivo
src/main/resources/application.propertiesy pon tu usuario/contraseña de MySQL -
Arranca la app:
mvn spring-boot:run
-
¡Listo! Abre http://localhost:9000 en tu navegador
Usamos Railway para el despliegue porque es súper fácil. La app detecta automáticamente si está en local o producción:
- Local: Usa MySQL en tu máquina (localhost:3306)
- Producción: Se conecta automáticamente a la base de datos que Railway te asigna
Solo tienes que conectar tu repo de GitHub con Railway y se despliega automáticamente cada vez que haces push.
El proyecto está organizado más o menos así:
src/main/java/- Todo el código Javabbdd/- Las clases para conectar con la base de datoscontrollers/- Los controladores web (Spring MVC)model/- Las clases modelo (Usuario, Residente, etc.)inicio/- La clase principal que arranca Spring Boot
src/main/resources/- Recursos del proyectostatic/- CSS, JavaScript e imágenestemplates/- Las páginas HTML (Thymeleaf)application.properties- Configuración de la app
setup_simple.sql- Script para crear la base de datos- Y algunos archivos más de configuración (pom.xml, etc.)
Creamos estos usuarios de ejemplo para que puedas probar todas las funciones:
| Usuario | Contraseña | Tipo que es |
|---|---|---|
| admin | admin123 | administrador |
| personal1 | pass123 | personal |
| familiar1 | pass123 | familiar |
Si eres administrador:
- Crear y gestionar todos los usuarios
- Ver toda la información de residentes
- Controlar el personal que trabaja
- Generar reportes (cuando lo terminemos)
Si eres personal/trabajador:
- Registrar cuidados que das a los residentes
- Programar actividades y eventos
- Ver la info de tus residentes asignados
Si eres familiar:
- Ver la información de tu familiar residente
- Consultar qué cuidados ha recibido
- Ver las actividades programadas
Hicimos bastantes mejoras importantes:
Lo más destacado:
- Cambiamos toda la base de datos a MySQL (antes teníamos PostgreSQL)
- Ahora funciona tanto en local como en producción sin problemas
- Creamos scripts automáticos para inicializar la BD
- Añadimos datos de prueba para que sea más fácil testear
- Mejoré mucho la documentación (este README)
Cambios técnicos que hicimos:
- Actualizamos
application.propertiespara MySQL - Reescribimos la clase
ConexionBBDD.javapara que sea más robusta - Creamos
DatabaseInitializer.javapara que se configure todo automáticamente - Los scripts SQL ahora están optimizados para MySQL
- Configuramos variables de entorno para el deploy
Si quieres ayudar a mejorar el proyecto:
- Haz fork del repo
- Crea tu rama para la nueva función (
git checkout -b mi-nueva-funcion) - Haz commit de tus cambios (
git commit -am 'Añado esta función genial') - Sube tus cambios (
git push origin mi-nueva-funcion) - Abre un Pull Request
Si tienes algún problema o pregunta, puedes contactarnos por aquí mismo (GitHub Issues) o buscar al equipo de desarrollo.
Equipo 06 - DAW 2021/2023
"Espero que os guste cómo quedó!" 😊