Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎵 Mini-Spotify Backend API

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.


🚀 Key Features

  • Layered Enterprise Architecture: Implements a strict decoupled separation of concerns across Controller, Service, and Repository (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).

🛠️ Tech Stack & Ecosystem

  • Core Language: Java (JDK 17+)
  • Framework: Spring Boot (Spring Web, Spring Data JPA)
  • Database Backend: MySQL
  • API Simulation & Debugging: Postman

🔌 API Documentation & Endpoints

1. Register a Song

  • Endpoint: POST /addsong
  • Request Body (JSON):
    {
      "title": "Chaleya",
      "artist": "Arijit Singh",
      "mood": "Romantic"
    }

2. Batch Bulk Insertion

  • Endpoint: POST /add-multiple-songs
  • Description: Receives large-volume song arrays for efficient, synchronous database storage.

3. Retrieve Entire Database Playlist

  • Endpoint: GET /playlist
  • Response: Pulls a complete live matrix of all songs actively stored inside the relational schema.

4. Real-time Mood Analytics

  • 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
    }

🧠 Core Competencies & Technical Growth

  • 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.

About

A simple Java and Spring Boot mini-project built entirely by me from scratch to master backend logic and CRUD operations. It connects with a MySQL database using Spring Data JPA and uses custom HashMaps and Lambda expressions to filter a playlist of 100+ songs based on their moods.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages