Usta Gallery Server v1.0.0
·
155 commits
to master
since this release
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) |
| 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).