🚗 📻 RoadTrip.FM: Quickly & Easily Find Nearby Radio Stations
Netlify x Hashnode Hackathon

Welcome to my blog 👋🏽
I'm a Front-End Developer with a passion for learning!
I write about Programming 👩🏽💻 and Productivity Tips ✅
Search for a command to run...
Netlify x Hashnode Hackathon

Welcome to my blog 👋🏽
I'm a Front-End Developer with a passion for learning!
I write about Programming 👩🏽💻 and Productivity Tips ✅
Good work ♥️ Alyssa Holland, here's my contribution for #netlify and #hashnode #hackathon 🚀
Although my experience is primarily with front-end development, my current job is affording me the opportunity to do more full-stack work. Naturally, this meant that I needed to explore the different database GUIs available on the market. Here is a l...

A Note on the Series: Fast Fridays 🏎 is a series where you will find fast, short, and sweet tips/hacks that you may or may not be aware of. I will try to provide these (fairly) regularly on Fridays. In this Fast Friday tip, I'll explain how to crea...

Over the past year, I’ve started incorporating a Git GUI into my workflow. I still reach for the terminal about 90% of the time, but I’ve found that a GUI can really shine when it comes to things like viewing diffs, checking stashes, or resolving mer...

Simplifying Branch Management with Git Worktree

With all the AI tools popping up these days, I figured I'd try out some speech-to-text software in an attempt to boost my productivity. I've been hearing a lot about “developing at the speed of thought”, so here's a list of the top speech-to-text sof...

I am excited to announce my hackathon project called RoadTrip.FM.
RoadTrip.FM is a site that helps you quickly & easily find nearby radio stations. It’s a perfect addition for your next road trip!
🌐 View the live version of the site at roadtripfm.live
💻 Check out the Github repo at https://github.com/Cool-Runningz/roadtrip-fm:
When you begin your search you will be prompted with two potential paths that you can take:
Once a location has been identified, you can click Find Stations to display a list of all the radio stations found within an approximate 50-mile radius. The display is split into 15-mile, 30-mile, and 50-mile sections and sorted in ascending order by frequency in order to provide the user with an easier way to parse through the stations' list.

I’ve had the idea for this project for years now. During one road trip, I remember driving through multiple towns and constantly having to manually scan for new stations as we drove in and out of range. If one of the stations went on a commercial break, I would find myself having to go through the same song & dance to try and find a new station to listen to.
It looked a little something like this:
After doing that for the umpteenth time during the trip, I looked over at my husband and blurted out:
“I wish there was a convenient way to be able to find radio stations so that I wouldn’t have to go through this process.”
At that moment, the lightbulb went off and my project idea was born.
In the following sections, I will describe how I went about implementing this project and will provide a deeper dive into the technical details. The first detail I will share is why the default, max distance of a 50-mile radius was chosen. According to Wikipedia, the average FM reception is 30-40 miles (50-60 km). Based on that, I figured 50-miles would be a good range to work with and provide the users with a sizeable subset of stations to choose from.
The first thing I did was plan out all of the routes and scaffold them into the project. Conveniently, Remix is built on top of React Router which made wiring up the routing a straight-forward process. This also gave me a nice introduction to Remix since it’s the first time that I’ve ever built anything with the framework.
After my routes were all defined and stubbed out, I moved on to installing all the project dependencies and configured everything to be ready to be used later on.
I waffled back and forth on what to do and eventually decided to have my own database as opposed to having to rely on external API’s. I decided to use Prisma as the ORM because it made bridging the gap between the backend and working with the database much more comfortable.
Thankfully, there are helpful repositories like the Countries States Cities Database. Finding this gem of a project opened up new doors and provided an opportunity for me to construct the data set I needed.
I am a tried and true front-end developer and the thought of having to deploy my first full-stack application was very daunting. Thankfully, Remix provides a Netlify template that made the process a little less intimidating. This template included a netlify.toml file that provided instructions so that Netlify could run the serverless functions.
In order to configure my local development environment, I had to install Netlify's CLI. This allowed me to run the netlify dev command which sets up a local dev server with Netlify’s proxy and redirect rules. I’m new to the whole topic of serverless development, but I find it really interesting and it’s a topic that I definitely want to explore further.
Figuring out how I could obtain the data I needed was one of the trickier parts of this project. I did a lot of research, and, unfortunately, there is no API out there that allows you to retrieve a list of radio stations based on a location. It simply doesn’t exist (at least not that I’ve found). Thankfully, I stumbled across a Wikipedia table that yielded a result of stations based on the U.S. State and I knew I could make something work.
Because there isn’t a pre-existing API that provides a list of radio stations based on location, I had to cobble together data from a myriad of different resources. Once I was able to identify the various services I could use, I was able to stitch them together until they formed into a data set that I could leverage.
I chose to build this project with Remix because I’d been hearing a lot about it and figured this would be a great opportunity to dabble and try something new. Because Remix is a full-stack framework, it provides a seamless transition between writing code on both the client-side and server-side. Overall it was a cool development experience and I look forward to learning more and writing blog posts about it in the near future.
Since design is not my forte, I reached for the paid, Tailwind UI kit to make wiring up the UI pieces easier. I am all in with the Tailwind ecosystem and leveraged a ton of the Tailwind Labs packages to help build out the UI for the site. It was well worth the investment.
To add a little bit of flair to the GPS search page, I utilized React Leaflet which is a wrapper around the popular vanilla JS version of the Leaflet.js package. This library allowed me to add the map that you see with a marker and radius circle which provides a nice visual effect for the user.
I am super proud of what I’ve been able to accomplish for the hackathon, however, there are many more improvements that I would like to make in the future. Below is a list of some items that I would like to add post-MVP.
Thanks for reading about the journey to create this project. This has been something that I’ve wanted to implement for a while so I’m happy that it’s finally come to fruition. I hope you like it as much as I’ve enjoyed developing it.
Again, feel free to check out the site and view the Github repository.