How thamesblanq/ulads-back works
ULADS Backend API serves student accounts and platform features through a NestJS HTTP/WebSocket backend. The main workflow is a client request entering a feature controller, passing through its service, and returning a result; authentication also consults user records and issues JWTs. Separate feature areas cover elections and voting, announcements and approval, academic resources, chat, and administrative audit logs. The README documents password recovery and centralized error handling; the sampled auth service shows database and email interactions, while wiring for other feature services is not sampled.
Main entry points: jwt-auth.guard.ts JWT guard · roles.guard.ts Roles guard · auth.service.ts Auth service · users.controller.ts User routes
Components 23
Identity & Access
- Auth routes
src/auth/auth.controller.ts - Auth service
src/auth/auth.service.ts - User routes
src/users/users.controller.ts - Users service
src/users/users.service.ts - JWT guard
src/auth/jwt-auth.guard.ts - JWT strategy
src/auth/jwt.strategy.ts - Roles guard
src/auth/guards/roles.guard.ts
Member Features
- Announcement routes
src/announcements/announcements.controller.ts - Announcements service
src/announcements/announcements.service.ts - Resource routes
src/resources/resources.controller.ts - Resources service
src/resources/resources.service.ts - Realtime chat
src/chat/chat.gateway.ts
Elections & Oversight
- Election routes
src/elections/elections.controller.ts - Elections service
src/elections/elections.service.ts - Audit log routes
src/logs/logs.controller.ts - Logs service
src/logs/logs.service.ts
API Runtime
- PostgreSQL
src/config/database.ts - Nest bootstrap
src/main.ts - Error filter
src/common/filters/all-exceptions.filter.ts - Request logging
src/common/intercerptors/logging.intercerptor.ts - Application modules
src/app.module.ts
Other components
- Platform client
- SMTP email
Connections 30
- Platform client → Auth routes: sends auth requests
- Platform client → User routes: manages accounts
- Platform client → Announcement routes: uses announcements
- Platform client → Resource routes: browses resources
- Platform client → Election routes: votes and views
- Platform client → Audit log routes: requests audit logs
- Platform client → Realtime chat: opens chat
- Auth routes → Auth service: delegates auth
- Auth service → Users service: looks up users
- Auth service → PostgreSQL: reads and updates
- Auth service → SMTP email: sends reset email
- User routes → Users service: delegates account actions
- Announcement routes → Announcements service: delegates announcements
- Resource routes → Resources service: delegates resources
- Election routes → Elections service: delegates election actions
- Audit log routes → Logs service: fetches paginated logs
- Nest bootstrap → Application modules: creates application
- Nest bootstrap → Error filter: registers globally
- Nest bootstrap → Request logging: registers globally
- User routes → JWT guard: protects routes
- Announcement routes → JWT guard: protects routes
- Resource routes → JWT guard: protects routes
- Election routes → JWT guard: protects routes
- Audit log routes → JWT guard: protects routes
- JWT guard → JWT strategy: validates token
- User routes → Roles guard: checks privileged roles
- Announcement routes → Roles guard: checks privileged roles
- Resource routes → Roles guard: checks privileged roles
- Election routes → Roles guard: checks privileged roles
- Audit log routes → Roles guard: checks privileged roles