I Gave Myself Two Weeks To Build a Website From Scratch Using AI - Here’s What I Learned


The Video That Blew My Mind

I wasn’t a believer in the power of AI until a few weeks ago. I have a PM on my team at work who constantly emphasizes the value of using AI in our workflows to boost productivity. I started seeing a bunch of the engineers on the team integrate AI into their day-to-day and backend services and I couldn’t believe how powerful it was. I started playing around with GitHub Copilot to see what additional value I could derive from it for my role, and HOLY SH*T, it was auto-completing my queries, writing descriptions for fields, suggesting ways to write analyses without even having access to a dataset. MY MIND WAS BLOWN. I then went down a YouTube rabbit hole. I watched video after video, and I couldn't believe what I was seeing. People were building full-stack applications in under an hour without writing a single line of code. I immediately knew I needed to get in on the action and test it out. This blog post will describe what I built and what I learned. In the past, I’ve done really in-depth technical write-ups on how I achieved certain solutions, but this time around, I am going to focus on sharing my learnings and highlight some tips and tricks I picked up along the way.

This is the YouTube video from Riley Brown that first made my jaw hit the floor was this one. 2-hours straight of practical vibe coding on Cursor. The video contains three demos; each one builds on each other. Riley starts off with giving an overview of Cursor and then proceeds to tell the agent to create a box with balls bouncing around in it, and within a matter of seconds and without a single line of code, he had a functioning webpage that did just that. Next, he moved on to building a site that generates images based on a user description which was an introduction into the use of APIs in Cursor. Lastly, he goes on to build a deep research application that generates in-line diagrams to explain complex topics. This introduced me to the concept of connecting, writing, and reading from a database. These demos got me thinking about all of the ideas I’ve had over the years that I never carried out because building a mobile app or a website was hard - not any more. I gave myself two weeks to come up with an idea, create wireframes, draft requirements, and develop and launch a functioning website for you to use.

My Idea - Find Recipes Based on Ingredients

I immediately began to rack my brain for ideas that I could turn into fun, easy, and helpful applications. As a home cook, one of the challenges I have is knowing what to do with ingredients that I have or that are about to expire. Traditional food or recipe sites and blogs require you to either know the recipe you want to make or they’ll display new and popular recipes for you to become inspired by. The problem with this way of searching for recipes is that, once you know what you want to make, you then have to go acquire the ingredients. I wanted to flip this concept on its head. What if we could provide a list of ingredients into a search box and have an application return only recipes that use up your ingredients - NOT ONLY THAT - it tells you the percentage of the recipe’s ingredients that you have and what you still need. This was the idea for the web application I built which you can visit now by going to dishcover.recipes

My Solution is dishcover.recipes

I built a site that allows users to discover new dishes based on the ingredients they provide - this concept allowed me to came up with a new verb that I used to name my site - dishcover (discover x dishes = dishcover, get it? 😅). Below you’ll see some screenshots from my site. The main user flow is this

  1. Input one or more ingredients into the text box and tap to search for recipes that use up some percentage of the ingredients you have

  2. Browse relevant recipe cards which display recipe image, duration, steps, servings, score, missing ingredients, and percent match to the ingredients you have, and more

  3. Preview the recipe directly from the recipe results page or go to the full recipe page

  4. If you like the recipe, and want to save it for a later time, you can save the recipe to your Cookbook page, which is a collection of your saved recipes - for each recipe, you can leave personalized notes so you can remember important steps or changes you made when making the recipes (e.g. “Use less sugar next time”, “Substitute broccoli for peas”)

While these are the main actions, there are plenty of quality of life improvements that were a nightmare to implement, but core to building a site like this that i’ll get into later - recipe filtering, sorting, redirects, popover modules, returning back to cached search results, saving recipes, logging in via Google OAuth to view your cookbook, and more.

In the next section, I’ll talk about how I sized up the problem and got started


I Built My Website From Scratch - Here’s How I Did it

From the video I shared earlier, I had a general sense of what I needed to do to spin up a website. Use Cursor as my AI pair programmer who will do most of the heavy lifting, use Supabase for auth and database capabilities, and I’d deploy my site using Vercel.

But before even touching an IDE or writing a line of code, I started building wire frames and writing down requirements that would help guide the project. I did some preliminary wire framing in Figma which you’ll find below - feel free to browse around on these to see my thought process for the site. In Figma, I created a super barebones user journey; visualizing how they’d navigate through the site. Believe it or not, I spent a few hours putting this together - being a designer is HARD work. I took some inspiration from Bon Appétit, Recipes.com, Google Recipes, and other food blogs which helped me to mock up some really basic components. These wireframes would be the starting point for my site.

Next, I took an attempt at writing some loose requirements that will help guide and constrain the scope of the site. As I wasn’t going to be the one developing the site, I provided as much context as I could so that Cursor could build context around what it needed to build. To start, I asked ChatGPT for how do create a requirements doc, specifically for guiding development using the Cursor/Vercel stack. ChatGPT provided me with a nice framework that I could fill out give to the Cursor agent. I copy and pasted the template in a Google Doc and filled it out with information about dishcover.recipes. Below you can take a read through what my finished template looked like.

Once I was happy with the MVP of my Figma wire frame and requirements, I loaded any applicable screenshots and paragraphs into Cursor, said a prayer, hit enter, and let Cursor agent go to work. It was actually remarkable how close Cursor got to delivering the base functionality on the first try, but there was still days worth of prompting to get it to a finished product. This blog is unlike other ones I’ve done in the past. In previous blog posts, I’d give really in-depth technical explanations and walk-throughs for how I achieved certain parts of my solutions, but this time around is so much different. With the state of AI assistants and how advanced they are, you could achieve a similar solution by just conversing with your favorite AI-assistant. Long gone are the days of having to troubleshoot on your own or follow tedious instructions step-by-step. Now you can just say “Build me a this or troubleshoot that” and you don’t really need to know how it’s done. That is why I am skipping the technical explanations for this project and just discussing what I learned. For a project like this, it’s more about knowing how to engage with the LLMs and AI-assistants than really having a deep understanding of software development. While, yes, it is helpful. I think someone who comes from a non-technical background could achieve a similar output, maybe just not in the same amount of time.

Below I’ve put together some of my learnings from this project, but at a high-level I was able to get a working solution by using Cursor to develop a front-end and back-end. Supabase was used for Google authentication and data storage. This allows users to sign into their cookbook and view the recipes they’ve saved and their notes about them. My codebase was hosted in GitHub and the project was deployed with Vercel. I purchased the domain dishcover.recipes and was able to use Vercel and NameCheap to have the website visible on the domain I purchased. My desire to launch a website like this was ultimately driven by my curiosity for understanding of how these tools work and how they can work together. It’s amazing that I can just type in “Here is the documentation for Spoonacular and this is my API key. Can you put my key in a secure place and then figure out how to get raw recipe information back from the recipe endpoint? We are going to need to need this information for displaying recipe information on the recipe cards” and Cursor will make it work in under 5 mins - this would have otherwise taken me days if not weeks to figure out how to make the calls and return data, let alone have it display in the right places programmatically across my entire site - forget it. The power of these tools is truly unbelievable, and below you’ll find some of my learnings from this project.

What I Learned From Launching recipes.dishcover & What I’d Do Differently Next Time


I’m Ready to Tackle My Next AI Project

At the time of releasing this post, I’ve taken on a few AI projects at work and I’ve just built my first website from scratch. What holds true across these experiences is that AI assistants helped get me across the finish line. There is no doubt that being able to work with AI assistants and LLMs has become and is going to be a highly valued skill in the workforce - it not only allows people to boost their productivity by saving time doing manual tasks, it is a HUGE unlock for solving difficult problems. By no means, am I an expert in this field, and this post is not intended to convince you that I am - I’m far from it. I am just getting started and excited to learn more in this space. Feel free to leave a comment about my website, suggest tools that make your workflow easier, share platforms or tips on how make your product more beautiful, or feel free to share your experience or thoughts on LLMs or AI assistants. Thanks for dropping by and reading this post. I hope you got to learn something new!

All the Best - Brandon

Next
Next

Building a Twitter Bot Using Python, Docker & Amazon Web Services