How nobody082/pbl3 works
PBL3 is a music-streaming web application: users register or sign in, browse and play music, and manage playlists and favourites; artists can upload music. The frontend presents these workflows and the Spring API supplies account, catalogue, and listening features. Sampled code confirms authentication persistence, artist upload and avatar handling, and recent-play/favourite operations. Other feature areas are represented from the README and source tree; their unsampled call wiring is not asserted.
Main entry points: AuthController.java Auth API · AuthService.java Account logic · CustomOAuth2UserService.java Google sign-in · ArtistController.java Artist API
Components 24
Web experience
- App pages
frontend/web/src/app/(app)/page.tsx - Sign-in forms
frontend/web/src/features/auth/ui/LoginForm.tsx - Music player
frontend/web/src/widgets/music-player/ui/MusicPlayer.tsx - Playback queue
frontend/web/src/widgets/queue/ui/QueuePanel.tsx - Playlist views
frontend/web/src/app/(app)/playlist/page.tsx - Song upload
frontend/web/src/features/upload-song/ui/UploadSong.tsx - Session storage
frontend/web/src/shared/lib/authStorage.ts
Identity and profiles
- Auth API
backend/api/src/main/java/com/pbl3/controller/AuthController.java - Account logic
backend/api/src/main/java/com/pbl3/service/AuthService.java - Google sign-in
backend/api/src/main/java/com/pbl3/service/CustomOAuth2UserService.java - Profile and history
backend/api/src/main/java/com/pbl3/service/HumanService.java
Music and discovery
- Artist API
backend/api/src/main/java/com/pbl3/controller/ArtistController.java - Song operations
backend/api/src/main/java/com/pbl3/service/Implement/SongServiceImp.java - Discovery operations
backend/api/src/main/java/com/pbl3/service/Interface/SongService.java - Song responses
backend/api/src/main/java/com/pbl3/mapper/SongMapper.java - Media storage
backend/api/src/main/java/com/pbl3/service/CloudinaryService.java
Backend persistence
- Account records
backend/api/src/main/java/com/pbl3/repository/HumanRepository.java - User records
backend/api/src/main/java/com/pbl3/repository/UserRepository.java - Artist records
backend/api/src/main/java/com/pbl3/repository/ArtistRepository.java - Song records
backend/api/src/main/java/com/pbl3/repository/SongRepository.java - Play history
backend/api/src/main/java/com/pbl3/repository/RecentPlayedSongRepository.java
Other components
- Listener / artist
- Cloudinary
- Google identity
Connections 26
- Listener / artist → App pages: uses
- Listener / artist → Sign-in forms: signs in
- Listener / artist → Song upload: uploads music
- Sign-in forms → Auth API: submits credentials
- Auth API → Account logic: authenticates
- Account logic → Account records: looks up account
- Account logic → User records: saves user
- Account logic → Artist records: saves artist
- Auth API → Session storage: returns session data
- Auth API → Google sign-in: OAuth callback
- Google sign-in → Google identity: loads identity
- Google sign-in → Account records: finds or updates
- Google sign-in → User records: creates user
- App pages → Music player: opens playback
- App pages → Playlist views: manages playlists
- Music player → Playback queue: controls queue
- Song upload → Artist API: uploads tracks
- Artist API → Media storage: uploads media
- Media storage → Cloudinary: stores media
- Artist API → Song operations: creates song
- Artist API → Artist records: saves artist
- Song operations → Song records: reads and writes
- Song operations → Song responses: maps responses
- Profile and history → Account records: reads and saves
- Profile and history → Song records: looks up songs
- Profile and history → Play history: records play history