How khvostiv/music-practice-management-system works
Piano Piece Tracker is a Spring Boot app for maintaining a personal piano repertoire and practice history. A user logs in or registers, then manages pieces and sheet-music PDFs, records timed practice, creates learning goals, and views dashboard totals. Controllers own the web/API entry points; services implement domain operations and repositories persist user-scoped records. The README documents optional S3 storage. Some controllers and integrations are unsampled, so uncertain wiring is shown only as unverified; the graph does not assume their implementation details.
Main entry points: PianoPieceService.java Piece management · LearningGoalService.java Goal tracking · PracticeSessionService.java Session tracking · HomeController.java Home and pieces
Components 23
Web and access
- Home and pieces
src/main/java/ca/sheridancollege/khvostiv/controllers/HomeController.java - Authentication API
src/main/java/ca/sheridancollege/khvostiv/controllers/AuthenticationController.java - Authentication
src/main/java/ca/sheridancollege/khvostiv/services/AuthenticationService.java - JWT service
src/main/java/ca/sheridancollege/khvostiv/services/JwtService.java - JWT filter
src/main/java/ca/sheridancollege/khvostiv/config/JwtAuthenticationFilter.java - Security config
src/main/java/ca/sheridancollege/khvostiv/config/SecurityConfig.java
Repertoire and goals
- Piece API
src/main/java/ca/sheridancollege/khvostiv/controllers/PianoPieceController.java - Piece management
src/main/java/ca/sheridancollege/khvostiv/services/PianoPieceService.java - Learning goals API
src/main/java/ca/sheridancollege/khvostiv/controllers/LearningGoalController.java - Goal tracking
src/main/java/ca/sheridancollege/khvostiv/services/LearningGoalService.java
Practice and insights
- Practice endpoints
src/main/java/ca/sheridancollege/khvostiv/controllers/PracticeSessionController.java - Practice page
src/main/java/ca/sheridancollege/khvostiv/controllers/PracticePageController.java - Session tracking
src/main/java/ca/sheridancollege/khvostiv/services/PracticeSessionService.java - Dashboard metrics
src/main/java/ca/sheridancollege/khvostiv/services/DashboardService.java - Dashboard page
src/main/java/ca/sheridancollege/khvostiv/controllers/DashboardController.java
Persistence and files
- Piece records
src/main/java/ca/sheridancollege/khvostiv/repositories/PianoPieceRepository.java - Session records
src/main/java/ca/sheridancollege/khvostiv/repositories/PracticeSessionRepository.java - Goal records
src/main/java/ca/sheridancollege/khvostiv/repositories/LearningGoalRepository.java - User records
src/main/java/ca/sheridancollege/khvostiv/repositories/UserRepository.java - Composer records
src/main/java/ca/sheridancollege/khvostiv/repositories/ComposerRepository.java - Sheet music storage
src/main/java/ca/sheridancollege/khvostiv/services/SheetMusicService.java
Other components
- Piano student
- Amazon S3
Connections 29
- Piano student → Home and pieces: uses
README.md - Home and pieces → Authentication: authenticates
src/main/java/ca/sheridancollege/khvostiv/controllers/HomeController.java - Authentication API → Authentication: delegates to
src/main/java/ca/sheridancollege/khvostiv/controllers/AuthenticationController.java - Authentication → JWT service: creates token
src/main/java/ca/sheridancollege/khvostiv/services/AuthenticationService.java - JWT filter → JWT service: validates token
src/main/java/ca/sheridancollege/khvostiv/config/JwtAuthenticationFilter.java - Security config → JWT filter: configures
src/main/java/ca/sheridancollege/khvostiv/config/SecurityConfig.java - Home and pieces → Piece management: manages pieces
src/main/java/ca/sheridancollege/khvostiv/controllers/HomeController.java - Home and pieces → Composer records: looks up
src/main/java/ca/sheridancollege/khvostiv/controllers/HomeController.java - Home and pieces → Sheet music storage: stores and serves
src/main/java/ca/sheridancollege/khvostiv/controllers/HomeController.java - Piece API → Piece management: delegates to
src/main/java/ca/sheridancollege/khvostiv/controllers/PianoPieceController.java - Piece management → Piece records: reads and writes
src/main/java/ca/sheridancollege/khvostiv/services/PianoPieceService.java - Piece management → User records: loads owner
src/main/java/ca/sheridancollege/khvostiv/services/PianoPieceService.java - Piece management → Goal records: deletes piece goals
src/main/java/ca/sheridancollege/khvostiv/services/PianoPieceService.java - Piece management → Session records: deletes piece sessions
src/main/java/ca/sheridancollege/khvostiv/services/PianoPieceService.java - Learning goals API → Goal tracking: delegates to
src/main/java/ca/sheridancollege/khvostiv/controllers/LearningGoalController.java - Goal tracking → Goal records: reads and writes
src/main/java/ca/sheridancollege/khvostiv/services/LearningGoalService.java - Goal tracking → Piece records: loads target piece
src/main/java/ca/sheridancollege/khvostiv/services/LearningGoalService.java - Goal tracking → Session records: measures practice
src/main/java/ca/sheridancollege/khvostiv/services/LearningGoalService.java - Goal tracking → User records: loads owner
src/main/java/ca/sheridancollege/khvostiv/services/LearningGoalService.java - Practice endpoints → Session tracking: delegates to
src/main/java/ca/sheridancollege/khvostiv/controllers/PracticeSessionController.java - Practice page → Session tracking: records sessions
src/main/java/ca/sheridancollege/khvostiv/controllers/PracticePageController.java - Session tracking → Session records: reads and writes
src/main/java/ca/sheridancollege/khvostiv/services/PracticeSessionService.java - Session tracking → Piece records: loads associated piece
src/main/java/ca/sheridancollege/khvostiv/services/PracticeSessionService.java - Session tracking → User records: loads owner
src/main/java/ca/sheridancollege/khvostiv/services/PracticeSessionService.java - Dashboard page → Dashboard metrics: loads metrics
src/main/java/ca/sheridancollege/khvostiv/controllers/DashboardController.java - Dashboard metrics → Piece management: gets pieces
src/main/java/ca/sheridancollege/khvostiv/services/DashboardService.java - Dashboard metrics → Session tracking: gets sessions
src/main/java/ca/sheridancollege/khvostiv/services/DashboardService.java - Dashboard metrics → Goal tracking: gets goals
src/main/java/ca/sheridancollege/khvostiv/services/DashboardService.java - Sheet music storage → Amazon S3: may store PDFs
README.md