TuneShift
Inspiration
Music creation is an iterative process. Artists often experiment with different ideas but struggle to track versions or revisit previous drafts. Inspired by Git, we wanted to build a version control system for musicians, allowing them to branch out ideas, collaborate, and never lose progress. We also wanted to foster a community where artists can inspire each other, remix tracks, and provide feedback.
What it does
TuneShift is a platform that lets musicians:
- Create projects and upload different versions of their music.
- Track changes over time, ensuring no creative idea is lost.
- Share work publicly through a community feed.
- Download tracks & create spin-offs, remixing ideas from other artists.
- Leave feedback & comments, encouraging collaboration.
How we built it
Backend (Spring Boot, MySQL, Security)
- Spring Boot & MVC architecture for clean and scalable code.
- OAuth & JWT authentication for secure user sessions.
- MySQL + Hibernate to manage user, project, and version data.
- Spring Security to protect API endpoints.
- SMTP Email Service for account verification.
- File Uploads with MultipartFile to handle project versions.
Frontend (Next.js 14, TypeScript, Tailwind CSS)
- Next.js for web routing and serving
- React 18 with TypeScript for a type-safe, scalable UI.
- Radix UI and shadcn for UI components library.
Challenges we ran into
- We quickly realized that dealing with large project files wasn’t as simple as uploading an image. Audio files, especially raw project files from DAWs, can be very large. We had to figure out how to utilize Spring's MultipartFile handling system as well as how to store blob data within an sql server.
- Since TuneShift is built around version control for music, we needed a structured yet flexible way to handle multiple versions of the same project. We debated whether to store everything as separate records, link versions in a hierarchy, or even use Git-like diffs. Eventually, we settled on a relational database approach with version metadata, which keeps things organized while making it easy to retrieve past versions.
- Configuring secure token storage, refresh tokens, and email-based activation was trickier than expected. Working with the complexity of Spring Security was challenging, but we eventually fine-tuned our session management to work smoothly.
Accomplishments that we're proud of
- Successfully built a Git-like versioning system for musicians.
- Integrated secure authentication & email verification.
- Designed a modern UI with an intuitive user experience.
- Implemented a community-driven platform for collaboration & feedback.
What we learned
A major feature we wanted was the ability to preview tracks directly in the feed without requiring users to download them first. This led to a deep dive into streaming audio directly from storage rather than relying on full downloads. This feature did not get implemented in time, however we learned a lot about audio encoding and performance.
We also learned about:
- Best practices for file storage & handling large uploads
- How to secure APIs with JWT and Spring Security
- Utilizing Next.js
- UI/UX skills
What's next
- Comparison tool – Side-by-side comparisons of different versions of a track.
- Privacy features - The ability to hide your projects from the community
- Tagging system – Label versions like "Rough Draft," "Final Mix," etc.
- Collaboration features – Invite others to contribute directly to projects.
- Embedded player improvements – Better previews without downloads.
Built With
- java
- mysql
- nextjs
- react
- springboot
- tailwind
- typescript
Log in or sign up for Devpost to join the conversation.