Plataforma de gestión de voluntariado y causas solidarias del grupo 3
Note
En la carpeta ./memorias se pueden encontrar todas las documentaciones de este proyecto.
![]() Fabián Sola |
![]() Pablo Peris |
![]() Sergio Ros |
![]() Manuel Bernabé |
![]() Antonio Pérez |
- Autores
- Tabla de Contenidos
- Descripción
- Arquitectura
- Despliegue en local
- Variables de Entorno
- Uso
- Testing
- Stack Tecnológico
- Créditos y Licencia
SolidarianID es una plataforma integral para la gestión de voluntariado y causas solidarias, desarrollada para la organización "Voluntarios Sin Fronteras". El sistema permite:
- Identidad Digital Única: Cada voluntario cuenta con un ID único y un historial de participación.
- Gestión de Comunidades: Creación y administración de grupos con intereses comunes.
- Causas Solidarias: Vinculadas a los Objetivos de Desarrollo Sostenible (ODS) de la ONU.
- Acciones Benéficas: Proyectos concretos con objetivos cuantificables.
- Eventos: Actividades presenciales para dar visibilidad a las causas.
- Panel de Administración: Interfaz web para la gestión y validación de solicitudes.
El proyecto sigue los principios de Clean Architecture, Hexagonal Architecture y Domain-Driven Design (DDD) y comunicación por eventos mediante Apache Kafka.
El sistema cumple la siguiente arquitectura:
- Node.js >= 20.x
- npm >= 10.x
- Docker y Docker Compose
- Git
- pnpm >= 10.x
Warning
¡Importante! Antes de iniciar la aplicación, se recomienda eliminar todos los volúmenes de Docker utilizados si es la segunda vez que se despliega el sistema en tu ordenador
docker compose down -v
docker volume prune -fgit clone https://github.com/fsoladur/SolidarianID.git
cd SolidarianIDEl modo producción despliega todos los servicios como contenedores Docker excepto el frontend en next.js que se ejecuta en local para facilitar el desarrollo y testing.
Important
Es crucial que se sigan los pasos en el orden indicado para evitar problemas de configuración y despliegue.
En la entrega de la asignatura se han proporcionado los archivos .env para cada aplicación.
En el caso del backend de la asignatura .env.production dicho fichero ha de ir en la carpeta solidarian-id/.env.production.
En el caso del frontend de la asignatura .env dicho fichero ha de ir en la carpeta solidarian-frontend/.env.
Para iniciar todo lo relativo al backend:
cd solidarian-id
npm run docker
npm run docker:mac # Solo para usuarios de MacOS para evitar problemas con la imagen de KurrentDB que no es multiplataforma Para iniciar lo relativo al frontend:
cd solidarian-frontend
npm install
npm run launchSi eres pnpm lover como nosotros, puedes usar:
cd solidarian-frontend
pnpm install
pnpm launchPara generar datos ficticios en el backend, puedes ejecutar el siguiente comando:
cd solidarian-id
npm run db:seedDe esta forma se poblarán las bases de datos con datos de prueba para facilitar el testing y la exploración de la plataforma.
Se podrá consultar cómo se ve la interfaz con datos en el puerto http://localhost:3000 para ver el frontend de administración que desarrollamos en el primer cuatrimestre y en el puerto http://localhost:4000 para ver el frontend de usuario que hemos desarrollado en el segundo cuatrimestre. Ten en cuenta que te harán falta las credenciales de administrador para acceder al panel de administración que aquí se adjuntan:
| # | Nombre | Teléfono | Contraseña | |
|---|---|---|---|---|
| 1 | Sergio García Martínez | sergio.garcia@solidarianid.org |
+34612345001 | Admin2024!Pass |
| 2 | Fabián Rodríguez López | fabian.rodriguez@solidarianid.org |
+34612345002 | Admin2024!Pass |
| 3 | Pablo Fernández Sánchez | pablo.fernandez@solidarianid.org |
+34612345003 | Admin2024!Pass |
| 4 | Antonio Martín González | antonio.martin@solidarianid.org |
+34612345004 | Admin2024!Pass |
| 5 | Manuel Pérez Ruiz | manuel.perez@solidarianid.org |
+34612345005 | Admin2024!Pass |
Para probar el frontend de usuario y solicitar la creación de una comunidad, causa o acción. Deberás tras solicitar la creación iniciar sesión en la aplicación de administración y aceptar o denegar la solicitud para que se vea reflejada en el frontend de usuario. Ya que como se ve en el diagrama de arquitectura, ambas aplicaciones están sincronizadas a través de eventos en Kafka y no a través de consultas directas a la base de datos. Quitando este ínfimo apunte puedes probar la aplicación con total normalidad.
Para detener todo lo relativo al backend:
npm run docker:downPara detener todo lo relativo al frontend:
Ctrl + C para detener el proceso de next.js
| Variable | Descripción |
|---|---|
NODE_ENV |
Entorno de ejecución (development / production / test) |
SESSION_SECRET |
Clave secreta para las sesiones HTTP |
ADMIN_PORT |
Puerto del servicio de administración |
USERS_PORT |
Puerto del servicio de usuarios |
COMMUNITIES_PORT |
Puerto del servicio de comunidades |
POSTGRES_* |
Configuración de PostgreSQL |
MONGO_* |
Configuración de MongoDB |
KAFKA_* |
Configuración de Apache Kafka |
Una vez inicializado el sistema, puedes acceder con las siguientes credenciales de administrador:
| Contraseña | |
|---|---|
manuel.perez@solidarianid.org |
Admin2024!Pass |
sergio.garcia@solidarianid.org |
Admin2024!Pass |
fabian.rodriguez@solidarianid.org |
Admin2024!Pass |
- Panel Admin:
http://localhost:3000/login - API Users:
http://localhost:3001/api - API Communities:
http://localhost:3002/api - Swagger Documentation:
http://localhost:300X/api/docs(cuando esté habilitado)
El proyecto incluye una estrategia de testing completa:
# Tests unitarios
npm run test
# Tests unitarios por servicio
npm run test:admin
npm run test:users
npm run test:communities
# Tests E2E
npm run test:e2e
# Tests de integración
npm run test:integration
# Tests de mutación (Stryker)
npm run test:mutation
# Cobertura completa
npm run test:all:coverage| Tecnología | Versión | Descripción |
|---|---|---|
| NestJS | 11.0 | Framework backend modular para Node.js |
| TypeScript | 5.9 | Lenguaje de programación tipado |
| MongoDB | 9.0 | Base de datos NoSQL para documentos flexibles |
| PostgreSQL | 16 | Base de datos relacional para datos transaccionales |
| Apache Kafka | Latest | Broker de mensajería para eventos entre microservicios |
| Docker | Latest | Contenedorización de servicios |
| Handlebars | 8.0 | Motor de plantillas para el panel admin |
| TailwindCSS | 4.1 | Framework CSS utility-first |
| Jest | 30.0 | Framework de testing |
| Cypress | 15.8 | Testing E2E |
- class-validator / class-transformer: Validación de DTOs
- Mongoose: ODM para MongoDB
- TypeORM: ORM para PostgreSQL
- KafkaJS: Cliente de Kafka para Node.js
- bcrypt: Hashing de contraseñas
- express-session: Gestión de sesiones HTTP
- Chart.js: Visualización de métricas
- PDFKit: Generación de informes PDF
SolidarianID ha sido desarrollado como parte de un Trabajo conjunto entre varias asignaturas en el contexto del Máster de Ingeniería del Software de la Universidad de Murcia.
Este proyecto está bajo la licencia especificada en el archivo LICENSE.
🌍 Voluntarios Sin Fronteras - SolidarianID Grupo 3© 2026





