How yuanchaoy03-dot/ai-media-center works
Personal Cinema is a personal media-library application: users can create an account, configure WebDAV media sources and scan folders, then browse and organize movies. The frontend includes library, collection, favorites, watched/unwatched, recent, detail, and AI-discovery views; the sampled implementation uses mock data for much of this experience. The sampled backend implements authentication and a limited source-list endpoint; its source query deliberately rejects non-empty results. Unsampled feature wiring is therefore shown as capability nodes without speculative call edges.
Main entry points: App.vue App shell · MediaSourcesPreviewView.vue Source preview · movieService.ts Movie queries · MediaSourceController.java Media source API
Components 25
Frontend experience
- App shell
frontend/src/App.vue - Login and register
frontend/src/components/auth/AuthForm.vue - Auth session
frontend/src/services/authService.ts - HTTP client
frontend/src/services/http.ts - Library and movie views
frontend/src/views/LibraryView.vue - Movie detail and status views
frontend/src/views/MovieDetailView.vue - Collections and favorites
frontend/src/views/CollectionDetailView.vue - AI discovery
frontend/src/views/AiDiscoveryView.vue - Global search
frontend/src/components/layout/GlobalSearch.vue
Media management
- Source preview
frontend/src/views/MediaSourcesPreviewView.vue - Source operations
frontend/src/services/mediaSourceService.ts - Source fixtures
frontend/src/mocks/mediaSources.ts - Movie queries
frontend/src/services/movieService.ts - Library fixtures
frontend/src/mocks/library.ts - Collection queries
frontend/src/services/collectionService.ts
Backend API
- Spring application
backend/src/main/java/com/shichaoya/aimediacenter/AiMediaCenterApplication.java - Auth API
backend/src/main/java/com/shichaoya/aimediacenter/user/web/controller/AuthController.java - Media source API
backend/src/main/java/com/shichaoya/aimediacenter/media/web/controller/MediaSourceController.java - Source query
backend/src/main/java/com/shichaoya/aimediacenter/media/application/service/MediaSourceQueryService.java - Source persistence
backend/src/main/java/com/shichaoya/aimediacenter/media/infrastructure/persistence/MediaSourceMapper.java - API error handling
backend/src/main/java/com/shichaoya/aimediacenter/common/web/ApiExceptionHandler.java
Identity and persistence
- Auth service
backend/src/main/java/com/shichaoya/aimediacenter/user/application/service/AuthService.java - User persistence
backend/src/main/java/com/shichaoya/aimediacenter/user/infrastructure/persistence/UserMapper.java - JWT access tokens
backend/src/main/java/com/shichaoya/aimediacenter/user/infrastructure/security/JwtAccessTokens.java
Other components
- Viewer
Connections 25
- Viewer → App shell: uses
- App shell → Login and register: renders
- Login and register → Auth session: authenticates
- Auth session → HTTP client: sends requests
- HTTP client → Auth API: calls API
- Auth API → Auth service: delegates
- Auth service → User persistence: reads and writes
- Auth service → JWT access tokens: issues token
- App shell → Source preview: hosts preview
- Source preview → Source operations: manages sources
- Source preview → Movie queries: loads movies
- Source operations → Source fixtures: uses fixtures
- Source preview → Media source API: not production-wired
- Media source API → Source query: delegates
- Source query → Source persistence: reads source IDs
- App shell → Library and movie views: routes to
- App shell → Movie detail and status views: routes to
- App shell → Collections and favorites: routes to
- App shell → AI discovery: routes to
- App shell → Global search: opens preview search
- Global search → Movie queries: searches movies
- Library and movie views → Movie queries: loads movies
- Movie queries → Library fixtures: reads fixtures
- Collections and favorites → Collection queries: uses collections
- Media source API → API error handling: errors handled by