Inspiration

My inspiration for this project was my dog Juni. This might sound a bit corny but I guess it is also Spotify. I don't have premium Spotify so am forced to listen to ads. I listen to music while walking my dog in the evenings mostly. I thought to myself – could I develop a full-on streaming platform using my own music (as in music that I own) which gets around any legal issues of copyright?

The Spotify interface is pretty good but quite frustrating too in that it cannot be customised. Plus, the mobile app is totally random – you can't really predict or define your songlist. I guess I want something better.

What it does

Keep things simple, functional, and beautiful is my mantra for software development. As a developer of 25 years (but out of the game for 7 years professionally — I’m now a hobby developer!), I figured I could probably build a better interface than Spotify.

My specialism is UX and UI. So...

  • It creates playlists
  • It uploads music to the backend
  • It plays the playlists (streams the songs) with a full music playbar
  • It allows users to customise their playlists to some degree
  • It pulls in Artist of the Week descriptions and links to Last.fm
  • It gives stats on the playlists you play most
  • It tracks how many minutes are listened to on each playlist
  • It includes an admin interface for uploading songs and performing housekeeping
  • It has a testing endpoint page for the micro-services

How we built it

I started off in Bolt and exported the result of the front and backend. I then created a project and opened it in Cursor and went from there. I was the sole developer.

  • Frontend: React + Vite
  • Backend: FastAPI (Python)
  • Database: PostgreSQL

Challenges we ran into

Development was fairly easy. The biggest challenge was that I only heard about this hackathon late, so I had just 5 days to finish this application.

Most of the challenges came during deployment on Railway, where you don’t have a lot of control over the environment. This was tough because I deal with the file system and complex configuration.

Timeline:

  • Development = 2 days
  • Testing = 1 day
  • Deployment = 2 days

Biggest headaches:

  • Flying blind during deployment
  • HTTP 307s rewriting HTTPS to HTTP
  • Files getting wiped on every deploy

Streaming is a bit slow, and large files can't be uploaded yet — so the infrastructure will need to be rethought.

Accomplishments that we're proud of

  • Building something in 2 days that would’ve taken me 12 months years ago
  • Creating a product that could be polished into a free + pro enterprise-grade solution
  • Working 5 days straight, morning to night
  • Writing my first TypeScript app
  • Using PostgreSQL again after 20 years

What we learned

  • Config is king!
  • I’m not over the hill as a developer (even if Cursor did the heavy lifting)
  • Development still brings headaches and AI doesn't solve everything
  • There’s a window of opportunity for solo devs to knock themselves out
  • Building solo is actually fun when you don’t have difficult team members

What's next for StreamFlow

  • Productionisation of the open source version
  • Launch of a private Pro version repo
  • Public release of both versions at some point in the future

Built With

Share this project:

Updates

posted an update

Unfortunately as this is deployed on Railway with super minimal features, uploads are very restricted to tiny files. If you upload something big it won't work. My limitations on time meant that I didn't fix all the bugs I wanted to bug I was happy with the result.

Log in or sign up for Devpost to join the conversation.