Inspiration
Music plays an important role in our daily lives, helping people relax, focus, and express their emotions. Inspired by popular music streaming platforms like Spotify, I wanted to build my own music streaming application to understand how real-world applications work behind the scenes.
As a Software Engineering student, I saw this project as an opportunity to turn my theoretical knowledge into practical experience. My goal was to build a platform where users could discover music and artists could upload and manage their songs.
What it does
MySpotify is a music streaming platform designed to connect listeners and artists through a simple and accessible experience.
The platform includes user registration, email verification using OTP, login, and account management. Users can discover songs, while artists can manage their profiles and upload, update, or manage their songs.
The system also supports role-based access control to protect features according to user permissions. In addition, JWT authentication and Redis-based session management help manage authenticated sessions.
How we built it
We built the project using Java and Spring Boot for the backend, MySQL for data storage, and Spring Data JPA with Hibernate for database operations.
The backend follows a layered architecture consisting of controllers, services, repositories, entities, and DTOs. This structure helps separate responsibilities and makes the code easier to maintain.
We implemented RESTful APIs for communication between the backend and frontend, Spring Security and JWT for authentication and authorization, and email OTP verification for account-related operations. Redis was also integrated for session management.
We used Postman to test API endpoints and deployed the backend to a VPS so that the frontend could communicate with it outside the local development environment.
Challenges we ran into
One of our biggest challenges was understanding how different Spring Boot components work together. Implementing authentication, authorization, email verification, and session management required us to understand how multiple technologies interact.
Database design was another challenge, especially when modeling relationships between users, artists, songs, and featured artists. We needed to ensure that these relationships supported the required features without making the system unnecessarily complicated.
Deployment was also a learning experience. Moving from a local development environment to a VPS required additional configuration and testing to ensure that the APIs were accessible to the frontend.
We addressed these challenges by breaking the system into smaller tasks, testing each feature independently, and gradually integrating the components.
Accomplishments that we're proud of
We are proud to have developed a working backend that brings together multiple technologies into a single application.
One of our key accomplishments was implementing essential account features, including email OTP verification, JWT authentication, and role-based authorization. We also integrated Redis for session management and designed a relational database to support the platform's core functionality.
Another milestone was deploying the backend to a VPS, allowing the frontend to access the APIs remotely instead of relying on a local development environment.
Most importantly, we transformed what we learned in the classroom into a practical software project and gained experience working with technologies commonly used in backend development.
What we learned
Through MySpotify, we gained practical experience with Java, Spring Boot, RESTful API development, MySQL, JPA, Hibernate, Spring Security, JWT, and Redis.
We learned how to design database relationships, organize a backend using a layered architecture, handle authentication securely, and test APIs using Postman.
We also learned that building a software application involves much more than writing code. Planning use cases, designing the database, documenting the system, debugging errors, and deploying the application are all important parts of the development process.
This project has strengthened our problem-solving skills and helped us better understand the software development lifecycle.
What's next for MySpotify
We plan to continue improving MySpotify by enhancing its functionality, security, and user experience.
Our future plans include integrating AI-powered music recommendations to help users discover songs based on their listening preferences. We also want to explore AI-assisted song moderation to help review artist submissions before publication.
Additionally, we aim to improve song discovery, optimize backend performance, strengthen security, and expand the platform's features for both listeners and artists.
Our long-term goal is to turn MySpotify into a more complete music streaming platform while continuing to learn and apply modern software development practices.
Log in or sign up for Devpost to join the conversation.