Microservicio encargado de la identidad y el ciclo de vida de los usuarios en Riff. Centraliza registro, autenticación, perfiles, relaciones de seguimiento, recuperación de contraseña y estadísticas, con persistencia en PostgreSQL mediante Prisma.
En una arquitectura de microservicios, los datos de usuario no deben duplicarse ni dispersarse entre servicios. users-ms actúa como la fuente de verdad para identidad y relaciones sociales, permitiendo que el gateway y el resto de la plataforma consuman información consistente sin acoplarse a la lógica interna del dominio.
- Crear, actualizar, desactivar y consultar usuarios.
- Validar inicio de sesión con contraseña.
- Generar tokens para autenticación.
- Crear usuarios con Google.
- Gestionar follow y unfollow.
- Recuperar y actualizar contraseñas.
- Promover automáticamente a un usuario a artista cuando publica contenido.
- Consultar estadísticas de perfil.
Frontend -> Gateway -> users-ms
users-ms -> PostgreSQL + Prisma
- users
- follows
- password resets
- stats
Gateway -> users-ms
- createUser
- login
- updateUser
- createUserGoogle
- generateToken
RabbitMQ -> users-ms
- user.publishedContent
Los flujos más frecuentes pasan por el gateway, mientras que los eventos de dominio permiten sincronizar cambios sin acoplar servicios.
El esquema de Prisma concentra el dominio de usuarios en cuatro entidades principales:
User: identidad, rol, biografía, imagen y estado.UserFollows: relaciones seguidor/seguido.PasswordReset: tokens, expiración y control de uso.SocialMedia: enlaces sociales asociados al perfil.
users-ms expone operaciones síncronas para el gateway y escucha eventos de dominio para mantener coherencia con el resto de Riff. Esa separación permite que autenticación, contenido y notificaciones evolucionen sin depender de una única base de código.
- TCP para
createUser,login,findOneUser,updateUsery consultas similares. - RabbitMQ para eventos como
user.publishedContent. - PostgreSQL como almacenamiento principal de identidad y relaciones.
- Prisma simplifica el acceso a datos y mantiene el modelo explícito.
- PostgreSQL se usa por la naturaleza relacional de usuarios, follows y resets.
- El dominio de usuarios se separa del gateway para evitar acoplamiento.
- Las relaciones sociales se modelan con una tabla puente con clave compuesta.
npm install
npm run start:devnpm run test
npm run test:e2eEste microservicio no orquesta la experiencia completa. Su valor está en concentrar la lógica de identidad y persistencia de usuarios para que el gateway y los demás servicios trabajen con datos consistentes y fáciles de consumir.