A clean and efficient Java backend application built using Spring Boot and MySQL to manage music playlists and provide smart, mood-based analytical insights.
I architected this project entirely from scratch to break away from AI dependency, master core backend engineering patterns, and implement memory-efficient data structures.
- Layered Enterprise Architecture: Implements a strict decoupled separation of concerns across
Controller,Service, andRepository(Data JPA) layers. - Relational Persistence: Seamlessly integrated with MySQL using Hibernate Object-Relational Mapping (ORM) to ensure permanent data durability.
- Optimized Data Aggregation: Leverages advanced Java collections (HashMaps) combined with Java Lambda Expressions for single-pass data transformations.
- Batch Processing Verified: Rigorously tested endpoints capable of handling dense JSON payload streams (Successfully validated using a custom 100+ production song dataset).
- Core Language: Java (JDK 17+)
- Framework: Spring Boot (Spring Web, Spring Data JPA)
- Database Backend: MySQL
- API Simulation & Debugging: Postman
- Endpoint:
POST /addsong - Request Body (JSON):
{ "title": "Chaleya", "artist": "Arijit Singh", "mood": "Romantic" }
- Endpoint:
POST /add-multiple-songs - Description: Receives large-volume song arrays for efficient, synchronous database storage.
- Endpoint:
GET /playlist - Response: Pulls a complete live matrix of all songs actively stored inside the relational schema.
- Endpoint:
GET /mood-count - Description: Evaluates the current catalog dynamically using modern functional streaming blocks to count aggregate distributions.
- Response Sample:
{ "Romantic": 35, "Sad": 24, "Gym": 18, "Party": 23 }
- Autonomous Problem Solving: Mastered dry-running core programmatic execution trees on paper to track and safely eliminate critical logical failures (such as state-tracking flag issues and variable reset overflows).
- Automated Database Lifecycle Management: Deepened comprehension of operational property layers like relational mapping states (
ddl-auto=update), entity keys (@Id,@GeneratedValue), and active connection string drivers. - Functional Programming Concepts: Migrated standard, verbose multi-line collection loops into concise and immutable functional blocks using methods like
.merge()and specialized lambda notation.