How trieudb3317dev/digital-museum-be works
Digital Museum API is a NestJS backend for public museum discovery and museum-staff content management. Visitors browse published museums and content, search, and save favorites; staff manage artifacts and related collections, exhibitions, tours, media, and narrations, with editorial workflows and platform-admin controls. Controllers delegate domain operations to a shared service, while narration audio generation is handled by a TTS service. The README documents PostgreSQL persistence and MVP limits; unsampled implementation details are not inferred beyond those documented capabilities.
Main entry points: platform.service.ts Platform domain service · tts.service.ts Narration audio generation · auth.controller.ts Accounts and profiles · museums.controller.ts Museum directory and membership
Components 20
API and access
- Accounts and profiles
src/auth/auth.controller.ts - Authentication and scope
src/common/guards.ts
Museum administration
- Museum directory and membership
src/museums/museums.controller.ts - Platform administration
src/museums/platform-admin.controller.ts
Content management
- Artifacts, collections, exhibitions
src/content/content.controller.ts - Editorial workflow rules
src/common/workflow.ts - Media management
src/media/media.controller.ts - Image validation
src/media/image-dimensions.ts
Visitor experiences
- Virtual tours and scenes
src/tours/tours.controller.ts - Narration management
src/narrations/narrations.controller.ts - Narration audio generation
src/narrations/tts.service.ts - TTS provider adapter
src/narrations/tts.provider.ts - Public search
src/search/search.controller.ts - Visitor favorites
src/favorites/favorites.controller.ts
Domain and persistence
- Platform domain service
src/platform.service.ts - Museum domain entities
src/entities/index.ts - PostgreSQL
Other components
- Visitor
- Museum staff
- Platform admin
Connections 30
- Visitor → Accounts and profiles: registers or signs in
- Museum staff → Accounts and profiles: authenticates
- Platform admin → Platform administration: manages museums
- Visitor → Museum directory and membership: browses museums
- Museum staff → Museum directory and membership: manages memberships
- Visitor → Artifacts, collections, exhibitions: browses content
- Museum staff → Artifacts, collections, exhibitions: manages content
- Museum staff → Virtual tours and scenes: builds tours
- Visitor → Virtual tours and scenes: views tours
- Museum staff → Media management: manages media
- Museum staff → Narration management: manages narrations
- Visitor → Narration management: reads narrations
- Visitor → Public search: searches content
- Visitor → Visitor favorites: saves favorites
- Accounts and profiles → Platform domain service: delegates account operations
src/auth/auth.controller.ts - Museum directory and membership → Platform domain service: delegates museum operations
src/museums/museums.controller.ts - Platform administration → Platform domain service: delegates admin operations
src/museums/platform-admin.controller.ts - Artifacts, collections, exhibitions → Platform domain service: delegates content operations
src/content/content.controller.ts - Virtual tours and scenes → Platform domain service: delegates tour operations
src/tours/tours.controller.ts - Media management → Platform domain service: delegates media operations
src/media/media.controller.ts - Narration management → Platform domain service: delegates narration operations
src/narrations/narrations.controller.ts - Public search → Platform domain service: delegates search
src/search/search.controller.ts - Visitor favorites → Platform domain service: delegates favorites
src/favorites/favorites.controller.ts - Platform domain service → Image validation: validates image dimensions
src/platform.service.ts - Platform domain service → Editorial workflow rules: applies workflow rules
src/platform.service.ts - Platform domain service → Narration audio generation: enqueues audio generation
src/platform.service.ts - Narration audio generation → TTS provider adapter: synthesizes speech
src/narrations/tts.service.ts - Platform domain service → Museum domain entities: uses domain entities
src/platform.service.ts - Narration audio generation → Museum domain entities: reads and saves records
src/narrations/tts.service.ts - Museum domain entities → PostgreSQL: maps persisted records