How azyzhm/unitrace-web-app works
UniTrace is a university lost-and-found REST API: users register and verify accounts, publish lost/found declarations with optional pictures, manage declaration visibility and lifecycle, and maintain their profiles and sessions. HTTP requests enter through routes and controllers, which delegate business rules to services; repositories persist state through Mongoose. The README identifies search, matching, expiry automation, and admin endpoints as not yet implemented, so they are not represented as runtime components. Relationships below are limited to README or excerpt/Source Index evidence; unsampled subsystem links are omitted where callers are not shown.
Main entry points: index.js API routes · auth Auth & session · declaration.controller.js Declaration controller · app.js HTTP application
Components 24
HTTP API
- Server startup
backend/src/server.js - HTTP application
backend/src/app.js - API routes
backend/src/routes/index.js - Auth routes
backend/src/routes/auth/auth.routes.js - User routes
backend/src/routes/users/user.routes.js - Declaration routes
backend/src/routes/declarations/declaration.routes.js - Error response
backend/src/middlewares/common/error-handler.js
Identity & Accounts
- Auth controller
backend/src/controllers/auth/auth.controller.js - User controller
backend/src/controllers/users/user.controller.js - Auth & session
backend/src/services/auth - Profile & deletion
backend/src/services/users - User presenter
backend/src/presenters/users/user.presenter.js
Declarations
- Declaration controller
backend/src/controllers/declarations/declaration.controller.js - Declaration rules
backend/src/services/declarations/declaration.service.js - Picture handling
backend/src/services/declarations/picture-storage.js - Declaration presenter
backend/src/presenters/declarations/declaration.presenter.js
Persistence & Events
- MongoDB
- Declaration repository
backend/src/repositories/declarations/declaration.repository.js - User repository
backend/src/repositories/users/user.repository.js - Auth repositories
backend/src/repositories/auth - Event bus
backend/src/events/common/event-bus.js
External Services
- Email delivery
backend/src/services/common/email.service.js - AgentMail
Other components
- API client
Connections 29
- API client → HTTP application: sends requests
README.md - Server startup → HTTP application: starts
backend/src/server.js - HTTP application → API routes: mounts routes
backend/src/app.js - API routes → Auth routes: registers
backend/src/routes/index.js - API routes → User routes: registers
backend/src/routes/index.js - API routes → Declaration routes: registers
backend/src/routes/index.js - Auth routes → Auth controller: dispatches
backend/src/routes/auth/auth.routes.js - User routes → User controller: dispatches
backend/src/routes/users/user.routes.js - Declaration routes → Declaration controller: dispatches
backend/src/routes/declarations/declaration.routes.js - Auth controller → Auth & session: delegates
backend/src/controllers/auth/auth.controller.js - User controller → Profile & deletion: delegates
backend/src/controllers/users/user.controller.js - Declaration controller → Declaration rules: delegates
backend/src/controllers/declarations/declaration.controller.js - Auth controller → User presenter: formats users
backend/src/controllers/auth/auth.controller.js - User controller → User presenter: formats users
backend/src/controllers/users/user.controller.js - Declaration controller → Declaration presenter: formats declarations
backend/src/controllers/declarations/declaration.controller.js - Declaration rules → Declaration repository: queries
backend/src/services/declarations/declaration.service.js - Declaration controller → Picture handling: serves picture
- Declaration repository → MongoDB: reads and writes
backend/src/repositories/declarations/declaration.repository.js - Auth & session → User repository: accesses users
- Auth & session → Auth repositories: manages tokens
- Profile & deletion → User repository: accesses users
- Auth repositories → MongoDB: persists auth
- User repository → MongoDB: persists users
- Auth & session → Email delivery: sends codes
backend/src/services/auth/auth.service.js - Profile & deletion → Email delivery: sends codes
backend/src/services/users/profile.service.js - Email delivery → AgentMail: sends email
backend/src/services/common/email.service.js - HTTP application → Error response: handles errors
backend/src/app.js - Server startup → Event bus: registers listener
backend/src/server.js - Declaration rules → Event bus: emits events