Volver a proyectos

Proyecto de máster

Solidarian ID

Plataforma solidaria basada en microservicios que conecta a ciudadanos y ONGs y registra las acciones solidarias de cada usuario en un Historial Solidario ligado a su identidad digital.

TypeScriptNestJSReactNext.jsGraphQLKafkaMySQLMongoDBRedisCassandraDockerAWSGitHub Actions

Resumen

SolidarianID es una plataforma pensada para fomentar la implicación de la ciudadanía en causas solidarias y mejorar su visibilidad y financiación. Está dirigida a ciudadanos con conciencia social, ONGs y entidades similares, que pueden crear comunidades, publicar causas y registrar acciones de voluntariado, donaciones monetarias o donaciones de objetos.

Su elemento diferencial es el Historial Solidario: un registro digital de las acciones solidarias de cada usuario, ligado a su identidad digital, que las ONGs pueden consultar. El proyecto se desarrolló en equipo durante el Máster en Ingeniería del Software y se trabajó desde varias asignaturas: gestión ágil, desarrollo full-stack, arquitectura de datos, desarrollo en la nube y seguridad.

Pantalla de bienvenida de Solidarian ID
Pantalla de bienvenida de Solidarian ID

Aspectos destacados

  • Proyecto en equipo de cuatro personas desarrollado a lo largo del Máster Universitario en Ingeniería del Software
  • Backend de microservicios en NestJS con persistencia políglota: MySQL, MongoDB, Redis y Cassandra según las necesidades de cada dominio
  • Tres interfaces: un panel de administración con NestJS y Handlebars, una PWA en React con notificaciones Web Push y una versión en Next.js
  • Migración parcial a AWS con un pipeline de CI/CD y un login de administradores serverless
  • Planificación ágil completa con roadmap, User Story Mapping, priorización MoSCoW y un plan de escalado con SAFe

Arquitectura

El sistema se organiza como un monorepo de microservicios en NestJS: Comunidades, Usuarios, Acciones y Estadísticas, con una pasarela que actúa como único punto de entrada y enruta las peticiones. Cada servicio sigue DDD y arquitectura limpia/hexagonal, con agregados, eventos de dominio y repositorios que separan el dominio de la persistencia.

Los servicios se comunican mediante el bus CQRS de NestJS y Kafka como bus distribuido de eventos y comandos. La persistencia es políglota: MySQL para usuarios y acciones por su integridad transaccional, MongoDB para comunidades, causas e historial por su esquema flexible, Redis para notificaciones y Cassandra para estadísticas orientadas a consulta.

En la nube, la autenticación de administradores se migró a un enfoque serverless con AWS SAM: API Gateway invoca una Lambda que valida las credenciales contra DynamoDB y la pasarela emite el JWT.

Diagrama de arquitectura de Solidarian ID
Diagrama de arquitectura de Solidarian ID

Retos técnicos

  • Coordinar microservicios mediante eventos y comandos sobre Kafka manteniendo cada dominio desacoplado
  • Elegir la base de datos adecuada para cada dominio y justificar la persistencia políglota
  • Construir una PWA con funcionamiento offline, caché de GraphQL y notificaciones Web Push recibidas desde Kafka
  • Diseñar un pipeline de CI/CD con análisis estático, auditoría de dependencias, tests y control de calidad con SonarQube
  • Auditar la seguridad de la aplicación con OWASP ZAP y analizar vulnerabilidades como CORS abierto o el almacenamiento del JWT

Resultado

Se implementaron el backend completo de microservicios con Kafka y persistencia políglota, el panel de administración, una PWA en React casi completa con notificaciones Web Push, una versión en Next.js y el despliegue local con docker-compose.

En la nube se desplegó el microservicio de usuarios en EC2 mediante el pipeline de CI/CD y el login de administradores serverless en AWS. El proyecto terminó con una auditoría de seguridad con OWASP ZAP y el PMV en un estado avanzado.

Estadísticas de la plataforma Solidarian ID
Estadísticas de la plataforma Solidarian ID