The finale to my first full-stack project experience.
I built a full-stack golf course search platform and am sharing the details of my journey.
If you've been following along, you might remember my posts last fall about diving headfirst into the deep end of full-stack development.
In case you missed them - Building out my first full-stack project. tackled some of the first initiatives I was building on this journey and Three things I appreciate more now that I'm coding. highlighted some of the things I’ve grown to appreciate after flipping roles and viewing things from the dev side.
Fast forward to January 2025, and I started to work on a new full-stack project called “Find My Club,” designed to bridge my love for golf with my desire to keep learning software building.
Now that I’ve built out all the features I plan to and am starting to look at my next project, I wanted to share my experiences, highlight some of the things I learned along the way, and hopefully spur some of your interest in starting projects like this yourself.
Why build a golf course search engine?
I’ve always loved golf, but scouring the internet for course details - only to land on one that was way too tough or not challenging enough - was getting old.
I needed a platform that could handle a ton of course data, potentially serve up real-time availability, and offer personalized suggestions beyond just “18 holes, par 72.”
And could it help me learn the full-stack ropes along the way? Even better.
How did I define my scope?
There are a handful of platforms that seem to have variations of this golf course search, and many of them seem to have integrations into the same booking platform, which - as I learned more - is more of a pay-to-play situation.
Since I planned to both self-fund and do this on a near $0 budget, I opted to ditch the most useful feature (booking integration), but I think some of the other features I considered would offset.
These features include:
The ability to search for golf course/club data across the US based on lower-level data points not seen in competitor products, such as searching by whether a course has a putting green
These data points exist on other platforms, BUT you can’t really use them to search or filter, which…is weird to me.
Creating a unique golfer profile/log in where you can highlight your preferences and skills
A recommendation engine that would involve a scoring mechanism that combined all the factors mentioned above - just enter your zip code, radius, and boom - you get a list of recommendations
The ability to favorite courses that you see/have interest in and go back them to them at a later date
The AI Factor
If you caught my earlier posts or hear me constantly preach about things like Perplexity, you already know that AI tools are the heart of many things I’ve been testing and learning from in the last couple of years.
Based on how many free tools exist in the market, I decided that if I spent any money on this project it would be either to create data OR to test out some of these new AI tools.
Can you test AI tools for free? Yes.
However, if you want the real fancy cross-codebase AI to fix all your code and logic problems, I did find that paying a few bucks into OpenRouter to tap into the models there was helpful.
After using AI heavily to build out this project, I did realize:
Boilerplate Generation: AI is an absolute champ at spitting out things like CRUD routes, config files, and skeleton components. However, sometimes you can run the same prompt through multiple times and get different answers. So there’s some volatility.
Architecture & Integration: It’s trickier here. AI often suggests neat snippets, but stitching them together into a cohesive system still needs a human touch. Cross code base review and suggestions for someone new to this is extremely useful.
Prompt Quality: The more precise my prompts, the more useful the AI output becomes. Vague prompts = partial or downright weird solutions. I often found myself copy/pasting between LLMs just because they put words more eloquently than I can.
Although I used several platforms and products along the journey, some of them, such as the DeepSeek models, did a great job of breaking down the thinking process used to assess what to do.
I learned more about thinking about and breaking down technical problems, which will be super helpful for my day job and future projects.
The Tech Stack
One of my biggest hurdles over the last decade when it came to learning to code has been figuring out what tools I needed to do the job.
At work, I knew about things like lower environments and unit testing but I never really understood what the process looks like to establish them, move work between them, and how much effort actually goes into just keeping an environment updated led alone actually coding the product itself.
All that being said, I did use AI to suggest a tech stack early on with the goal of being able to learn modern coding platforms/tools.
Here’s what my adventure looks like under the hood:
Database and user authentication
Supabase because they can handle both, have a really friendly UI, and could support the PostgreSQL db I decided to build
FastAPI & Node.js (Backend)
FastAPI for quick and efficient Python-based endpoints
Node.js for event-driven tasks and real-time functionality
React & Vite (Frontend)
React for a modern, component-based UI
Vite for ultra-fast builds and a smooth dev experience
Vercel & Railway (Deployment)
Vercel to effortlessly deploy the frontend
Railway for hands-off hosting of backend services
Language-wise, I used a few different coding languages to build out the project:
I wanted to justify using Python for something, so I ended up being able to build out the recommendation engine through it.
I’m not sure what makes up the Other but there’s a good chance Github just doesn’t recognize some of the gibberish I added along the way.
Wins & Challenges
The feeling of FINALLY fixing a bug after hours of work is one of the best feelings I’ve had working in technology.
Based on my limited expertise in coding, the bug fixing became a consistent thing I ran into - it was like a constant drip of dopamine fixing them.
Now that I’m pivoting into my next project, here are a few of the biggest wins and challenges I faced in the journey:
Wins:
Automation: AI-generated ETL scripts reduce my time on repetitive tasks - like cleaning up half-baked course data from multiple APIs. I tested and achieved end-to-end automation and I could see value in teams working on enabling this over business features (gasp).
Personalized Recommendations have so much potential: By blending Python for data crunching and Node.js for event handling, I’ve built a recommendation engine that helps golfers find courses that suit their needs.
Integrations: The ability for IDEs to consume API documents, review links on the web and import documents really helped me when I was trying to set up each of the different technologies to work together. I think more teams in legacy platforms should figure out how to leverage these tools.
Challenges:
Data Cleanliness: No two golf courses seem to store their details in quite the same way, meaning there’s a lot of custom logic involved in normalizing everything. I found that being able to create and maintain the level of data needed to manage all of the golf courses was significant and if I were to really build this out, I would need to find a consistently refreshing low cost data option to use.
AI “Gotchas”: Sometimes AI code is almost correct. Other times, it’s bizarrely off. The key is staying patient and learning to debug with an open mind. I see a lot of running jokes about how efficiency gains get washed out by the amount of time it takes to fix all the new bugs - these are 100% accurate.
Tool usage: As mentioned, I did try many of the different AI tools to complete this effort. Part of it was to just try them - the other part was that I would run into dead ends often. The main reason I switched to Cursor was because I hit a dead end with Copilot in VS Code as an example.
What’s Next?
I think that to really level up this project, the biggest hurdle is a consistent data feed.
Whether that means building it myself or connecting to other integrations, the data is King.
Since I’m not trying to spend money on this project, I did not buy any data but would need to for scaling.
Additionally, as mentioned earlier, the biggest feature desired from the people I surveyed was around booking, which I would need to have a relationship with other companies to offer this service.
As these are two major hurdles, I will leave what I had built in production as portfolio material and then move on to some new work.
I’m starting to poke through random GitHub projects that others have open-sourced and plan to use those in combination with AI tools to continue to build and learn.
If you would like to see what I built, here’s a link:
If you would like to see what a ton of AI coded into a project looks like, here’s my Github project:
Product Party Github / Find My Club
Until next week,
Mike @ Product Party
Want to connect with me and other cool product people on Bluesky?
Thanks for reading! Please like, comment, share, and subscribe if you haven't already. You can also show your support by clicking this link and buying me a coffee.
Daaaammmnnnn 👏🏼👏🏼👏🏼👏🏼👏🏼 congratulations!!!