How rautaruukkipalich/library works
This is a Spring Boot library application with account authentication, a book/author/genre catalog, and media upload, retrieval, and processing. Users call REST controllers; domain services/use cases perform the requested work, with PostgreSQL repositories for catalog and account state and local storage for media files. The media subsystem also validates uploads, extracts metadata, and supports asynchronous task processing. The tree and sampled sources establish these responsibilities, but do not expose every controller-to-service wiring detail, so uncertain links are omitted.
Main entry points: modules Postgres repositories · AuthServiceImpl.java Authentication · usecase Media operations · UserServiceImpl.java User services
Components 23
API and security
- JWT filter
src/main/java/com/app/core/security/jwt/JwtAuthenticationFilter.java - Auth controller
src/main/java/com/app/modules/auth/controller/AuthController.java - User controller
src/main/java/com/app/modules/user/controller/UserController.java - Book controller
src/main/java/com/app/modules/book/controller/BookController.java - Author controller
src/main/java/com/app/modules/author/controller/AuthorController.java - Genre controller
src/main/java/com/app/modules/genre/controller/GenreController.java - Media controller
src/main/java/com/app/modules/media/controller/MediaController.java
Accounts and auth
- Authentication
src/main/java/com/app/modules/auth/impl/AuthServiceImpl.java - User services
src/main/java/com/app/modules/user/impl/UserServiceImpl.java - Auth user lookup
src/main/java/com/app/modules/user/impl/UserAuthQueryServiceImpl.java - Refresh tokens
src/main/java/com/app/modules/refresh_token/impl/RefreshTokenServiceImpl.java
Library catalog
- Book service
src/main/java/com/app/modules/book/impl/BookServiceImpl.java - Author service
src/main/java/com/app/modules/author/impl/AuthorServiceImpl.java - Genre service
src/main/java/com/app/modules/genre/impl/GenreServiceImpl.java
Media management
- Media operations
src/main/java/com/app/modules/media/usecase - Upload validation
src/main/java/com/app/modules/media/validator/MediaValidationService.java - Media processing
src/main/java/com/app/modules/media/service/MediaProcessingService.java - Metadata extraction
src/main/java/com/app/modules/media/metadata/MediaMetadataService.java - File service
src/main/java/com/app/modules/media/service/FileService.java
Persistence
- Postgres repositories
src/main/java/com/app/modules - Local file storage
src/main/java/com/app/modules/media/repository/impl/LocalStorageRepositoryImpl.java
Other components
- API client
- PostgreSQL
Connections 29
- API client → Auth controller: calls
- API client → User controller: calls
- API client → Book controller: calls
- API client → Author controller: calls
- API client → Genre controller: calls
- API client → Media controller: calls
- JWT filter → Auth user lookup: looks up user
- Auth controller → Authentication: delegates
- Authentication → User services: uses account
- Authentication → Refresh tokens: manages tokens
- User controller → User services: delegates
- Authentication → Auth user lookup: queries account
- Book controller → Book service: delegates
- Author controller → Author service: delegates
- Genre controller → Genre service: delegates
- Media controller → Media operations: dispatches
- Media operations → Upload validation: validates upload
- Media operations → Media processing: requests processing
- Media operations → File service: manages files
- Media processing → Metadata extraction: reads metadata
- Metadata extraction → File service: reads file details
- File service → Local file storage: reads and writes
- Authentication → Postgres repositories: persists account state
- User services → Postgres repositories: persists users
- Refresh tokens → Postgres repositories: persists tokens
- Book service → Postgres repositories: persists catalog
- Author service → Postgres repositories: persists catalog
- Genre service → Postgres repositories: persists catalog
- Postgres repositories → PostgreSQL: reads and writes