Este repositorio contiene el desarrollo del proyecto correspondiente al módulo MP0492 Proxecto de desenvolvemento de aplicacións multiplataforma.
- 📘 Sobre el Proyecto
- 🎯 Objetivos
- 🔗 Componentes del Sistema
- 🗄️ Estructura del proyecto
- 🧾 Diagrama de Secuencia
- 🎬 Demo
- 🚀 Deployment
- 🌱 Perspectiva a futuro e ideas
- 💻 Tecnologías
- 👤 Autor
Gestión de Comunidades es una aplicación web modular desarrollada para digitalizar y modernizar la administración de comunidades de vecinos, especialmente dirigida a pequeñas administraciones que no pueden permitirse soluciones ERP complejas y costosas.
Este proyecto nace como respuesta a la necesidad de mejorar la eficiencia administrativa, la trazabilidad de la información y la comunicación entre administradores y propietarios/as.
Tras realizar una breve encuesta en la provincia de Pontevedra, se constató que aún existen numerosas administraciones de comunidades que gestionan sus tareas de forma manual.
Para obtener más información sobre la motivación del proyecto, consultar el siguiente pdf 👉 Presentación del proyecto
Desarrollar una solución web que permita centralizar la información relevante, automatizar tareas rutinarias como la generación de recibos y facilitar la comunicación mediante notificaciones por correo electrónico.
- Centralizar Datos: Reunir toda la información relevante en una sola plataforma.
- Automatizar Procesos: Eliminar tareas manuales con funciones automatizadas.
- Mejorar la Comunicación: Facilitar el envío de notificaciones a propietarios/as mediante servicios de correo electrónico.
Reunir y demostrar conceptos adquiridos y trabajados. Para ello se afronta todo el proceso de desarrollo de una aplicación, desde una idea hasta su ejecución.
- Realizar encuestas en el sector para determinar las carencias.
- Abordar posibles arquitecturas y deliberar sobre las entidades que van a rodear al sistema y el comportamiento de las mismas.
- Generar y diseñar diagramas:
- Casos de uso
- Secuencia
- Entidad Relación
- Elegir el stack tecnológico.
- Implementar todos los componentes del sistema e integrar sus servicios.
- DevOps. Materializar el despliegue, gracias a la 'Dockerización' de las aplicaciones.
Son varios los proyectos que se cohesionan evitando el acoplamiento para aplicar las funcionalidades requeridas:
- Core: Lógica de negocio y gestión de datos implementada con Spring Boot.
- Frontend: Interfaz de usuario desarrollada en Angular.
- Microservicios:
EmailSender: Envío automático de correos electrónicos.PDFGenerator: Generación dinámica de documentos en formato PDF.
- Base de Datos: Sistema de persistencia para las entidades del dominio.
gestion-comunidades
├── 📁 docs/ # Documentación y recursos complementarios
├── 📁 core/ # Backend principal en Spring Boot
├── 📁 frontend/ # Frontend en Angular
├── 📄 docker-compose.yml # Despligue DDBB y servicios dockerizados
└── 📁 microservices
├── 📁 emailsender/ # Microservicio Python para email
├── 📁 pdfgenerator/ # Microservicio Python para generación de PDFs A continuación se representan diagramas de secuencia que muestra el flujo de ejecución de las principales acciones con el sistema.
Mediante el siguiente contenido multimedia se muestran fragmentos de una demo donde se aplican las acciones más relevantes del proyecto.
Panel informático que resume toda la data que existe en el sistema.

Proceso para añadir una nueva comunidad al sistema.

Obtener los datos que pertenecen a la comunidad (propiedades, propietarios/as, recibos...)

Generar un recibo para una comunidad.

-
De propietarios/as
La acción anterior desencadena la disponibilidad para la generación del recibo para los propietarios/as.
Esta función emite la generación de un recibo para posteriormente enviarlo por email a la persona vinculada.

services:
postgres:
image: postgres:15
container_name: postgres_commune
env_file:
- .env
volumes:
- ./docker/postgres/data:/var/lib/postgresql/data
ports:
- "${POSTGRES_PORT}:5432"
networks:
- commune-network
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
interval: 5s
timeout: 5s
retries: 5
frontend:
build: ./frontend
container_name: angular_commune
ports:
- "4200:80"
depends_on:
- postgres
networks:
- commune-network
backend:
build: ./core
container_name: backend_commune
ports:
- "3000:3000"
depends_on:
- postgres
networks:
- commune-network
emailsender:
build: ./microservices/emailsender
container_name: emailsender
networks:
- commune-network
environment:
- ENV=prod
pdfgenerator:
build: ./microservices/pdfgenerator
container_name: pdfgenerator
networks:
- commune-network
environment:
- ENV=prod
networks:
commune-network:Previamente se levanta PostgreSQL
docker compose up -d postgresEl corazón del sistema. Este servicio es el que orquesta la integración del resto de componentes al sistema.
Generar DockerFile y levantar el servicio
docker compose build backend --no-cache
docker compose up -d backendInterfaz para el usuario que accede al sistema.
Generar DockerFile y levantar el servicio
docker compose build frontend --no-cache
docker compose up -d frontendMicroservicio encargado de la maquetación y generación dinamica de recibos en formato PDF.
Generar DockerFile y levantar el servicio
docker compose build pdfgenerator --no-cache
docker compose up -d pdfgeneratorMicroservicio con la responsabilidad de ejecutar los envíos masivos de mail desde la interfaz gráfica.
Generar DockerFile y levantar el servicio
docker compose build emailsender --no-cache
docker compose up -d emailsenderAsegúrate de completar y configurar las variables de entorno definidas en los .env.example
Accede desde el navegador web Angular: http://localhost:4200/dashboard
- Autenticación de usuarios.
- Escalabilidad del sistema para integrar servicios de otros sectores relacionados.
- Aplicación móvil para propietarios/as o en su defecto acceso Web.
- Gestión de incidencias.
- Votaciones online.
Yeray Oubiña Rey
📍 España
📧 yeray.oubina.rey@gmail.com
🔗 GitHub
🔗 Linkedin



