How wenuanhappy/ai-museum-studio works
AI Museum Studio is a browser-based 3D learning museum about AI history, with optional accounts and real-time shared visitor avatars. The primary visitor flow is to enter the museum and explore historical exhibits; authenticated visitors can also register or sign in, while connected visitors share presence through WebSocket rooms. The README documents first-person navigation, collision limits, and 20+ milestones, but their implementation details are not included in the sampled source, so those internals are represented at the museum-page level.
Main entry points: MuseumPresenceHandler.java Presence handler · app.routes.ts App routes · AuthController.java Auth API · AppUserRepository.java User repository
Components 14
Museum experience
- App routes
frontend/src/app/app.routes.ts - 3D museum
frontend/src/app/modes/ai-museum/ai-museum-page.component.ts - Home page
frontend/src/app/shell/home/home-page.component.ts
User identity
- Auth page
frontend/src/app/core/auth/auth-page.component.ts - Auth service
frontend/src/app/core/auth/auth.service.ts - API client
frontend/src/app/core/api/api-client.service.ts - Auth API
backend/spring/src/main/java/com/aimuseum/auth/AuthController.java - JWT service
backend/spring/src/main/java/com/aimuseum/auth/JwtService.java - User lookup
backend/spring/src/main/java/com/aimuseum/auth/AppUserDetailsService.java
Live presence
- Presence handler
backend/spring/src/main/java/com/aimuseum/museum/MuseumPresenceHandler.java - WebSocket clients
Backend services
- User repository
backend/spring/src/main/java/com/aimuseum/auth/AppUserRepository.java - Health endpoint
backend/spring/src/main/java/com/aimuseum/common/HealthController.java
Other components
- Visitor
Connections 16
- Visitor → App routes: opens app
- App routes → Home page: routes home
- App routes → Auth page: routes login
- App routes → 3D museum: routes museum
- Auth page → Auth service: submits credentials
- Auth service → API client: sends requests
- API client → Auth API: HTTP requests
- Auth API → User repository: reads and saves
- Auth API → JWT service: issues tokens
- User lookup → User repository: loads account
- Presence handler → JWT service: validates token
- Presence handler → User repository: looks up visitor
- 3D museum → Presence handler: WebSocket presence
- WebSocket clients → Presence handler: connects and sends poses
- Presence handler → WebSocket clients: broadcasts room state
- Visitor → Health endpoint: checks service