Skip to content

Usta Gallery Server v1.0.0

Choose a tag to compare

@OscarCardozoDev OscarCardozoDev released this 05 May 23:52
· 155 commits to master since this release
e6374a5

UstaGallery v1.0.0

Plataforma de gestión de galería de arte para la Universidad Santo Tomás (Tunja).
Proyecto de grado. Backend NestJS + Bun + PostgreSQL. Frontend React 19 + Vite.


Módulos

Autenticación (/auth)

  • Registro y login con JWT en cookie HttpOnly
  • Tres roles: admin, professor, student
  • Verificación de email por código de 6 dígitos
  • Recuperación de contraseña por correo (Resend)

Usuarios (/user)

  • Gestión de perfiles vinculados a credenciales
  • Creación de estudiantes solo por profesores/admin
  • Foto de perfil por usuario

Roles (/roles)

  • Catálogo de tipos de usuario
  • Validación de roles por UUID (variables de entorno)

Grupos (/groups)

  • Profesores gestionan grupos de estudiantes
  • Asignación y cambio de profesor por grupo

Obras / Productos (/products)

  • Estudiantes crean obras con imágenes (base64)
  • Flujo de aprobación: profesores/admin aprueban para galería pública
  • Filtrado por estilos artísticos

Estilos artísticos (/styles)

  • Catálogo de estilos con categorías
  • Usados como filtro en obras y galería

Fotos (/photos)

  • Imágenes almacenadas como base64 en DB
  • Servidas como archivos estáticos desde public/images/

Eventos (/events)

  • Flujo de estados: PENDING → APPROVED → COMPLETED / CANCELLED
  • Completado lazy: se marca al leer si startDate < now
  • Tipos de foto: HERO (portada), PROMO, MEMORY
  • Invitaciones a grupos externos → aceptar → participación

Horarios (/schedule)

  • Slots semanales recurrentes
  • Al crear, genera clases automáticamente hasta SEMESTER_END_DATE

Clases (/classes)

  • Clases generadas desde horarios o creadas manualmente
  • Registro de asistencia con constraint único [classId, userId]

Stack técnico

Capa Tecnología
Runtime Bun
Framework NestJS
Base de datos PostgreSQL
ORM Prisma (@prisma/adapter-pg)
Auth JWT (cookie HttpOnly)
Email Resend
Contenedores Docker Compose
Documentación API Swagger (/api-docs)
Tests API Newman (Postman)

Roles y permisos

Rol Capacidades principales
admin Acceso completo
professor Gestión de grupo, aprobación de obras, eventos, horarios
student Crear obras, registrar asistencia
(sin auth) Lectura de galería pública, eventos e info de autores

Modelo de identidad

Credentials y Users son tablas separadas con el mismo UUID como PK.
Un usuario puede tener credenciales sin perfil (hasProfile: false).