Music Vote Live

A weekly voting radio for new music

A song plays on the radio, and a listener who likes it presses Vote. The vote counts toward this week's chart, which closes on Saturday at 15:00 London time. Then a winner is announced, a new chart opens, and the voting starts again. We built the platform around that loop: the website with the radio player, voting and weekly charts, artist sign-up and the admin panel.
The client
A UK radio platform for new music, run by its founder
Music Vote Live is a radio platform for new music, founded by Ty Harris in the UK. It is meant for bands and artists who write songs worth hearing and have no way to get them on air. Listeners discover the songs and vote for them, and the votes help artists build an audience and get chances to play live.

Ty runs the project on his own, without an in-house team. He keeps the music in an external storage service, which gives every uploaded song its own identifier, and he wanted to keep that workflow.

The challenge

Ty came to us with an idea and no engineering team. There was no site or prototype yet, only the storage service with the songs. Our platform had to pull songs from it by their identifiers.

He had plans for 2 more phases but kept the details to himself and asked us to focus on the first one. We designed the architecture for phase 1 without knowing what would come next.
Most of the product was familiar engineering. Everything else depends on one link: a vote has to reach the right song and stay there.

Our approach

Before development, Ty asked for 4 documents describing the project, among them a statement of work and a vision and scope document. During the project, most questions went by email, and Ty kept calls for urgent matters.

Our designer worked with Ty directly, and the design went through several rounds before he approved it. Once development started, one planned feature turned out not to work as designed, and we reworked it before release.

We split the work into 2 milestones and showed Ty a working demo after each. Some things we left out of this phase on purpose: deployment runs as one command, with no CI/CD pipeline, and the database and cache run on small AWS instances in one availability zone. Switching to a higher-availability setup is a configuration change.

What we built

Anyone can open the site and listen without an account, but voting needs one. At sign-up, people choose a role: listener or artist. Only listeners can vote, so artists can't push their own songs up the chart. Each listener gets one vote per song per week, and each vote earns a credit. Ty plans to open a shop in a later phase where listeners can spend their credits.
Radio player and live track data
The site shows what's playing, checking the radio stream for track data every 5 seconds. A listener can vote for the current song or look one up by its MVL reference. The stream itself runs on SHOUTcast through Centova Cast.
Artist sign-up and song intake
Artists sign up in 5 steps and appear in the admin panel as pending. Ty contacts each one, checks who they are and activates the account. Only then can their songs go on air. To add a song, he enters its identifier from the storage service, and the platform pulls in the audio, title, artist name and other metadata. The song then joins the radio rotation.
Votes that hold up
MVL describes its charts as independent of money and corporate influence, so the votes had to hold up. A vote is confirmed to the listener right away and written to the database through a queue. A vote that fails delivery moves to a separate queue. Once stored, a vote can't be changed or deleted: database triggers and revoked permissions block both.
Admin panel, reports and news
In the admin panel, Ty manages users, songs and part of the site's content, and exports reports. Listeners can tick a box saying they'd like to go to events. The reports group listeners by city and genre and show who ticked it, so Ty can see where an event would find an audience.

Near the end of the project, Ty asked for a news section outside the agreed scope. He writes MVL News on a separate blog, and the site pulls those posts in.
What we checked
The project has 138 unit tests and 321 end-to-end tests in 21 suites, which run against a full local copy of the system. We also wrote our own load test and security check scripts.

Outcome

A team of 4 built the platform in about 2.5 months: a designer, a tester, a project manager who also handled business analysis, and one developer who wrote the front end, the back end and the infrastructure. Fixing the remaining bugs took about 2 more weeks.

The platform is running at musicvotelive.com. For the first week, the chart pages stayed empty because the first weekly chart hadn't closed yet. By early November, the radio had more than 60 songs in rotation.

After launch, we handed the code and the running platform over to Ty. He runs it himself, and there is no ongoing work on our side. Ty has 2 more phases in mind and hasn't set a start date. His ideas include a merchandise shop for spending credits, a place where listeners and artists can talk, events planned from the reporting data with RSVP, and AI features.

Tech Stack

Frontend: TypeScript, Next.js, React, Tailwind CSS, Socket.IO | Backend: NestJS, Prisma, Passport | Data: PostgreSQL, Redis, Amazon SQS, Amazon S3 | Radio: SHOUTcast through Centova Cast | Infrastructure: AWS (ECS Fargate, RDS, ElastiCache, CloudFront), Terraform, Docker | Testing: Jest, custom load and security scripts

Feel like your project would win from our work? Let's talk!
sales@smartificial-ai.com