# 15+ Tips to Make You a Vibe Coding Pro ## Metadata - **Published:** 6/30/2025 - **Duration:** 35 minutes - **YouTube URL:** https://youtube.com/watch?v=ax99YQ-aXKk - **Channel:** nerding.io ## Description Join the Community: https://nas.io/vibe-coding-retreat Vibe coding—coined by Andrej Karpathy—is the art of guiding AI to build code from natural language, letting you focus on vision and flow instead of boilerplate. In this video, I’ll walk you through 15+ practical tips and best practices with #v0 #claude and #n8n work to so you can code faster, cleaner, and with more rhythm 💥 💡 Some of What You’ll Learn: - Core Concepts - Social Share Image (OpenGraph) - SEO (Robots, Sitemap, Schema) - 404 Page - Github Sync - Local Dev w/ Cursor - Redis IP Limiting - n8n Backend 💬 Did I miss your secret vibe coding trick? Share it below & let’s build the ultimate AI flow together! 👍 Like & Subscribe for more AI-powered development hacks. ## Key Highlights ### 1. V0: Next.js Integration & Speed V0 is preferred due to its tight integration with Next.js, optimized performance, and up-to-date framework support, streamlining the development process. Verscell backing ensures ease of use. ### 2. Visual & Code Editing Flexibility V0 offers flexibility by allowing users to edit visually (design tab) or directly through code. This caters to both non-coders and experienced developers for rapid prototyping and customization. ### 3. Dynamic OG Images & SEO Generation Leverage V0's capabilities to generate dynamic Open Graph (OG) images and SEO elements (sitemaps, robots.txt, 404 pages) directly from the chat interface, improving social sharing and search engine visibility. ### 4. GitHub Sync & Collaborative Workflow V0 integrates with GitHub, enabling seamless syncing of changes between local development and the platform. This facilitates collaboration between designers, developers, and product managers. ### 5. Custom Functionality & Backend Automation Extend V0's functionality by integrating with databases (like Redis) for features like voting systems and connecting to backend automation tools (like N8N) for complex workflows, such as signup processing and email sequences. ## Summary ## Vibe Coding Pro: Summary Document **1. Executive Summary:** This video provides 15+ practical tips and best practices for "vibe coding" (AI-assisted code generation from natural language) using tools like V0, Claude, and N8N. It focuses on leveraging V0 for rapid Next.js development, integrating with backend automation, and implementing best practices for SEO, security, and collaborative workflows. **2. Main Topics Covered:** * **Introduction to Vibe Coding and V0:** Explanation of vibe coding and why V0 (with its Next.js integration and Versel backing) is a preferred tool. Comparison to other options like Bolt and Lovable. * **V0 Interface & Basic Editing:** Exploring the design and code editing tabs, allowing both visual and code-based manipulation. * **Image Handling:** Strategies for incorporating images (using external hosting like S3). * **Dynamic OG Images & SEO Generation:** Generating dynamic Open Graph images and SEO elements (sitemap, robots.txt, 404 pages) using V0. * **Version Control & Collaboration:** Using revision history, sharing versions, and GitHub integration for seamless syncing between local development and the platform. * **Local Development:** Setting up local development with tools like Cursor. * **Custom Functionality & Backend Integration:** Implementing custom features like voting systems using Redis for IP limiting, and connecting to backend automation tools like N8N for complex workflows (signup processing, email sequences). * **Stripe Integration:** Using environment variables to connect to Stripe and automatically apply discount codes. * **Workflow Automation with N8N:** Generating automated workflows with N8N to handle data inputs and improve customer engagement. **3. Key Takeaways:** * V0's tight integration with Next.js provides speed and ease of use for rapid development. * The dual design/code interface makes V0 accessible to both designers and developers. * V0 can automate the generation of SEO elements and dynamic social sharing images. * GitHub integration facilitates collaboration and version control. * Backend integration with tools like Redis and N8N extends V0's functionality and automates workflows. * IP limiting and careful SEO management are important when working with AI-generated code. **4. Notable Quotes or Examples:** * "So, the OG image is it is creating this image response on this route... This is getting generated on the fly dynamically." (Demonstrating dynamic OG image generation) * "You can connect V0 to to N8N for an automation... I'm taking this lead magnet and I want to do an automation after the fact." (Explaining backend integration for automation) * "You can actually put in a rate limit based on the vote and I look at the user's IP... a security practice of looking at a user's IP to make sure that uh they're not doing too much..." (Illustrating security measures) * The video provides an example of pasting the URL of a competitor's site to get inspiration for the design. * Provides the example of using Clause AI to come up with a potential user flow. **5. Target Audience:** * Web developers interested in using AI for code generation. * Designers and product managers seeking rapid prototyping tools. * Individuals looking to streamline their Next.js development workflow. * Anyone interested in automating web development processes and backend integrations. ## Full Transcript Hey everyone, welcome to Nering.io. I'm JD and today what we're going to go through is we're actually going to look at a real example of a vibecoded website I've been working on called the vibe coding retreat. We're going to go through 15 different tips that I've learned along the way and how you can implement them. And with that, let's go ahead and get started. All right, so I'm trying to build this project called the Vibe Coding Retreat. And it's basically a hands-on 4-day lab where I'll go to different cities and work with a small core cohort to build so that they can build out their application. Uh also adding an online experience, you know, trying to do like a very intensive vibe coding and development uh retreat for different demographics. And I wanted to test myself and show not only that I could like vibe code this completely in a in a particular way, do it very quickly, but figure out like different lessons learned, pitfalls, whatever, uh, and kind of share them out. So, I decided to go with Vzero. And, you know, there's other options out there, right? Like there's Bolt, which is great. Bolt also has like an open-source uh version of this, which is really awesome. you can import from Figma and GitHub. Um the I just find myself burning through tickets a lot or tokens a lot and uh it for me like the GitHub management is is like super important and being able to work on things locally or deploy it out a different way if I want to. Uh there's also Lovable. Lovable is also great. Um, you know, I the reason that I go with V 0ero though is because Vzero specifically has like niched down. So, and the thing about that is it's directly integrated into Next. So, Nex.js is by Verscell. Versell is behind Vzero and they're they're becoming like hyperfocused on the framework, the deploy system, the integrations that they have and it it makes it an allound easy to use package. They also have their own model that you can actually use in different tools like cursor. Uh and to me that that overall experience is is incredibly important. Um, I also like the fact that because it's kind of niche and because it's fine-tuned, you have the most up-to-date version on the on the frameworks and things that you're trying to learn. And so, again, that that's why I go with Vzero. I also I you know, the UI that it comes up with is great. And so, that's what I'm going to uh kind of stick with and kind of show. So, what we're going to do is we're going to go through 15 different techniques that I've learned while v coding the uh coding retreat. And the things that you'll see like on this page, right, are how to embed videos, how to include images, um how can you make things dynamic, how can you connect it to Stripe. So I have information that's feeding this from uh different like data sources. I have the ability to connect to Stripe but also take the discount and automatically apply it. So like how can we actually go through and build those types of solutions where you can see it's actually going to connect and automatically give the discount as well as like counters and how you can actually submit forms. The other thing about this is we can actually go through and in the cities you can submit new cities and you can actually vote and there's different security practices that you kind of want to put up against that. uh just to make sure that you're not completely wide open. And so those are some of the things that we'll kind of go through uh not only in, you know, the vibe coding retreat, but today is like what are some quick tips in order to to just have things that you watch out for. Real quick, everyone, if you haven't already, please remember to like and subscribe. It helps more than you know. Also, take a look at the vibe coding retreat. If you see a city that you're interested in, I'd love to come visit. And with that, let's get back to it. All right. So, this is kind of your editor view and you can see like you have access to projects, which project you're on, different ways to interface with this, if you're going to share, publish, etc. You have your version history and we have different ways to kind of view things or select things. Uh you can actually see your code. And then what the first tip is there's if you're not familiar with being able to write code like first you can actually talk into the chat right so you can actually type in here to say like oh you know I want a new footer or whatever and basically that will actually go in and make the modification in the chat but you can also go in and you can do the design and if now you're selecting As you're hovering, you can actually come in here and edit. So, this is showing you what kind of a component it is. You can copy that component. You can delete it. You can come over here. You can change different aspects of it. Same thing with like a button for instance. We can do the entire div. We can actually get that single element. If we come into the div, we can actually see our typography. We can change our colors. And as you can see, it's pulling in Tailwind. So, Tailwind is another framework that you can use uh in order to to uh style this. But and as you're hovering, right, you can kind of see the changes. So, you can also do custom, right? Uh you can change the background. So, color is the font color, background is the background. You can change the birectional or not the birectional the the directional layout the alignment how this is going to be a gap in between these. So as you can see my alignment is center my justification center I could do a column this way if I wanted to to make it go up and down. So there's all these different ways that you can actually change this uh this project. I'm not going to save but it gives you the option to save. Once you save it would actually change the uh the version. Right? So that's the first tip is you can actually come in here even if you don't know how to code you can come in here and use the design tab. So on the flip side uh for me it's actually easier to go in and change the code. So, if I want to come in here and actually change uh the code of the the main page, which is our hero, I can come in and say uh that I want to change the about to something like me and then go preview and you can see that it's changed, right? So again again we can do uh changes that way where you come in and manually change the chat or the the code. So you have your chat, your design, your code, and then you all have the the preview menu or the the preview at the same time. The next thing you can do is you can actually copy and paste images. So, if you can see right here, I actually have an image of something that I wanted to pull from. As an example of like just giving me the prompt, I had an image that I wanted to pull in. I can also use that image to come up with different design concepts. So, let's say I go into the community and I see something that I really like. Couple different things you can do. You could actually open it and get the code, but you can also take a screenshot of, it doesn't have to be the community, anything really. And in Mac, I use command control uh shift4, but you can do a clip. And then we could come over here and we can actually just paste. So, command C, command V. We now have our image in here. So, this message you won't necessarily see. We're actually going to talk about that in a minute and it's basically that this uh chat has hit its max limit. So let's go into the the next tip. So what you can do is you can actually also paste URLs. So let's say I wanted to get inspiration from any nio. I could actually paste this into V 0 and tell it that I wanted that particular type of style look. And what it'll do is it'll actually go out and get a preview of that uh URL. All right. So, we've kind of seen the how we can make some edits. Now that we've made some edits, how do we actually view this? So there's a couple of different things. Again, we've talked about revision. So revision, you can actually go backwards if you want. So I have 80 different v revisions. This is my entire history. What I can do is I could actually click one or over here in the chat, you can see this version. You can view or restore. If you restore, it's going to revert back to that code. If you want a view, you can actually click the view and it will change it back to the original piece. Right? So if I wanted to go, so this is where my starting point was and then I can actually go back to the latest revision and actually view in between uh all the different stages that I went through. Another thing is you can actually open this in another tab. This will allow you to share this version. Now it's important to know that this version is it has an ID. So if you share that once you open in that tab, it's only going to share that state of your version. So that's really important. Other things you can do are like full screen. This is really good for like quick edit just kind of seeing. If you want to share your project, you can actually come up here and click share and you can do unlisted and do a copy link. You can also uh put it as public if you want um so that you can share with the the rest of the group. The other tip I'm going to share is around deploying to Verscell. So if you want to actually publish this, you can actually uh click and I wired up the domain. So um if I wanted to have another domain, you can see that it's always going to do this forcell.app. So if you actually want to change to a domain here, you have to do that in versel. So this is the other tip. You can actually work in Verscell as well in Vers Vzero and locally. This is again why I really like the uh all the different things on Versel. So I can visit the site if I want. This will actually pull up the deployed state. I can redeploy my version or I can actually view on Verscell. And this is where I can come in and change all different kinds of things, right? I can change my uh environment variables which will actually show. We can look at our logs. We can do all the the DevOpsy things here in Verscell. All right. So the next one is uh images. So this is a little tricky. Uh you can't actually upload images directly into Vzero, at least not yet. I haven't figured out a way uh for you to serve that. But you can do it a couple of different ways. These public placeholders, those were actually put here by Versel. So if we take a look, this is their attempt at just making some images. So I can actually change this locally or what I can do is I can actually just host my images on something like S3 or some other application. So for instance, when I wanted to come in and uh change the the logos that I have in my project, I actually needed to do that with S3. So what I did is I uploaded to S3 and then I went ahead and just put in this image into my code. All right, so the next one's a little complicated, but it's also really interesting. So there are we're going to go over two different things. The first is that you can actually do what's called an OG image. So what an OG image and open graph image is is it means that you can actually make dynamic uh share images. So like think social share images if you wanted to share something on uh Twitter or LinkedIn or whatever. So you can actually go in and uh this is a little complicated locally. And so one of the things that I really liked about uh v 0ero is you can actually tell it I want you know I want dynamic og image blah blah blah blah blah. And the reason that I did this right is because if I know I'm on the city, I want a different route of this OG. So what does this mean exactly? So the OG image is it is creating this image response on this route. And so when you go to the homepage and we say in our view source that might be it's actually too hard to read. So what we'll do is we'll just we'll actually show this through a checker. So basically when I land on this page it's just my uh URL. We're going to go to an open graph checker and we'll put in the vibe coding retreat. When we click check, it's actually showing me that these images, these URLs are being set up. So the URL, the type, the the description, and all of this is shown. And so you can actually see that there are different images. I did not create this image. This is getting generated on the fly dynamically. So by the data of the page and you can see right here like even all of this text I am not doing anything with that. So what we're going to do is when we do that we also I told it I want one specifically for the city. So now if we come in here and we go to cities and we say we want uh Detroit and we copy this and we put it in our OG tag, we're going to get a different image tag. So again, this was generated on the fly. So now I have a different design that can show exactly what I'm trying to do for this specific city. You can see that the the data the SEO data has changed and so is the image. Now all of that is being controlled by saying I want a dynamic OG image and you can see based on the data coming in here it's actually changing the data of the code. Now, this isn't one that you can edit in the design, but it's a fun little trick to try in the chat to actually build out this city or build out this uh OG route and then test in an open graph uh tester. Again, you can see what the template is. Along those same lines, you can actually tell it in the chat to generate the site map as well as the um robots and uh other like 404 pages as well. So what you can actually do is just say you know I want uh best SEO practices for sitemap robots and uh for and when you do that what'll actually happen is it is actually going to create the uh not found which we can see and I actually haven't tried yet if we can test that in our uh UI. So we'll let's let's go ahead and see if we go to preview and we just type in something random. We want to see a 404 page. All right. So it doesn't work in the editor, but what what it will work on is here. So if we just type in something random, we get a 404 page. And again, this is generated uh by V coding. I told it I wanted it uh lightweight, super interactive in a 404 page with best SEO standards. There's no images on this. It just makes it easier to load. And I have ways to get back home. I can go to the root or I can go to browse the cities. The other thing it's going to generate is the uh robots. So, this is pretty simple. Uh, just going to pick up some some best practices for user agents and SEO. And then it gives me my site map, which again is something that we're going to use because when we look at the site map, we want to know best practices around the site map. But we also made dynamic cities, right? We want to be able to add to those cities. So, those cities are dynamic. So, if I wanted to create um I uh Portland, then I could and uh it will automatically grab that information based on the site map site map and go ahead and generate a new SEO uh site map. So, if we go ahead and put in our site map, we can actually see here are the different cities. All of these will be put into the uh in will be indexed by uh Google and other bots. All right. So, the other thing that I can do is I can actually come in here and I can sync with GitHub. So, there's a bunch of different reasons that I would want to do this, right? I uh I I'm at the point where my UI is complete. I want to publish or I've already published which is the deploy, but I also want to make sure that everything that I've done is in sync and saved to GitHub. So, you kept seeing all of those things where it saves. Well, that history right here is being saved in Vzero. It's not being saved in GitHub. So, if I want to actually save this in GitHub, then all I need to do is push changes. And when I push those changes to GitHub, it's just going to push to my main directory and sync that branch. Real quick, everyone, if you haven't already, please remember to like and subscribe. It helps more than you know. Also, take a look at the Vibe Coding retreat. If you see a city that you're interested in, I'd love to come visit. And with that, let's get back to it. So now that this is synced, we can actually do a bunch of different things. Our developers can actually like let's say we're a product manager and we've made our our UI changes and we're actually handing this off to the developer. Well, now if you're not familiar with GitHub, you've already synced your changes. You have the ability to uh send this to your developer and they can pick it up and start working with it. We're going to go back to like the idea of forking as well. So, remember when I took a picture and I'll just take any picture and pasted it in here. We saw this message that says your message and attachment are now close to exceeding the context window. What that means is all the changes that I've done, every single one of these 80 for revisions in this single chat is it's running out, right? It's running out of space. So, what we need to do is start a new chat. And so, we can do that by forking into a new chat. All this is going to do is create a copy of this work and load me into a new version of this page. It has maintained all of the things that I needed it to in order to do that. It doesn't mean that I'm in a new branch. I am in the same branch. This goes back to like the versions of this page. I have no versions in here. It's just a new context window. New context window. Same branch. So where this is pretty interesting is like so now I can take this branch and I can actually develop it locally. And I'm not going to really like go through too much of that other than it just requires the same thing that you would normally do with uh GitHub. You can actually just connect, copy, and pull it down locally. Now that I'm in locally, what I can do is I can actually make changes. So, you can see here I have like my Apple touch icon, my fave icon, and things like that. so that when I'm back here, you can actually see in the browser tab that uh the the little icon, right? Um, and so what that means is we can actually upload these changes or images if we want or make changes to this file and actually make uh a get commit. So I'm working locally. I'm making a change. And let's just find something in like the the footer and we'll go ahead and make a change. So instead of saying 2025, I'll say update full year. This way it will automatically update every single time. I can go ahead and save this locally. I can be in my terminal. I can say get status. It recognizes. I'll do a get commit and I'll just say bug footer. uh date. I can actually push that. Got to pull first. Pull get pull. And I'll do get push. So all you'll need to do is get push. The rest uh was all just developer stuff. You can come back here. And if you look at the chat, we'll actually see down here at the bottom a sync. And it might take a second for it to actually sync here. We'll see if we can force syncing branches. But you should see an automatic uh sync here where I'll find one. Yeah. So right here where you see I detected automatically sync new changes from main in the vibe coding retreat repo. So in this version I pushed a local change and it was able to recognize in this chat window that I made a local change. That to me is huge. Uh that means that like the developer can work on this. Uh the designer can work on this, the product manager can work on this. You now have this ability to to kind of work in tandem as you normally would with different branches. All right. So now we're going to talk about like some custom functionality. And inside my code, I uh needed to do a couple of things. I actually wanted to have a signup. I want to have this voting system and I want to be able to connect to a database. In order to do that, I can come here to settings and there's different integrations, right? So, a lot of people are using like superbase, uh, neon, all of these are like really great. I just want Reddus. The reason that I want Reddus is I want something lightweight. I want something fast and I want to be able to do some different kind of techniques. So, inside of Reddus, what I'm going to do is based on the city, I'm going to allow the user to vote. So, if I come in here and I say I want to vote, and we'll just whatever. Sure. Uh, fall. And now we voted for Asheville. You can see that it automatically did the connection or it's saved to the database and it's preventing me from doing uh another submit. So I actually went in and told it to do that, right? I in the in and this could be locally or or wherever you can come in here and you can actually do that submission. So on the vote I'm actually handling some information. The other thing that I did was that in that same code, I don't want a user to come in here and vote multiple times. So, I need a way to stop. Rather than having them go and vote, I think I have a limit of five. Rather than having them vote like 10 different times, I need a limit. I want to make sure that these are legitimate traffic, right? So, I can actually put in a rate limit based on the uh vote and I look at the user's IP. This is one of the reasons that I wanted Reddit. It's a security practice of looking at a user's IP to make sure that uh they're not doing too much within, you know, an aotted time to cut down on nefarious acting. I'm not saying that like this will protect you all the time or anything like that, but you're putting in different practices into your code to to kind of mitigate that. So, by looking at a person's IP address, I can see how many votes have they done in the past day and that's been cached so that if they hit that result, they will see an error. You can only vote however many times per day. Uh and otherwise submit as a part of that you can also do environment variables. So as a part of this I have my Google Analytics. I have uh Postgress if I was going to do soup base which I probably will in the future. I have my JWT secrets. I have admin stuff. I have my deployments. I have my stripe information. I have different variables that are specific of defaults. What city? my reddus URL. So there's all these different environment variables of how I can actually configure this, right? So with the stripe variable that's coming into play in my pricing. So when I look at my pricing component, I basically want to take the the environment variable of the buy URL and see if I can actually uh create a direct connection to Stripe. So by this using this checkout URL and the ability to have a promo code, I can actually connect directly to Stripe. And that's how we saw that earlier is when you come down here and you click this button. This is controlled by an environment variable. That environment variable is allowing you to launch into Stripe. There's also the logic to take the discount coupon code and automatically apply it to that URL. All right. So, the last thing I want to show is the uh fact that you can actually connect all of these to a backend. So, you can connect this through an API uh in the um in in V 0, but in order to process that you can also do it so you can have automations. So, I'm going to connect V 0 to to N8N for an automation. So, I'm taking this lead magnet and I want to do an automation after the fact. Now, the way I do that is I'm still going to follow traditional backend implementation. There's nothing specific about this. So when I do a submit, I am going to post that information for sign up and send it uh in this case to Reddit, but I can also send it to NAN. And the way I can do that is a couple of different ways. So I actually used Claude to come up with this user flow. Again, we're just trying to to see if we can vibe code most of this So what I did was I told it what I was trying to do. I took a picture and I asked it for a NAN work. So as you can see here, I basically took pictures of the image of the form and I said I need to create an NM sales pipeline and here's all the information that I have. it was trying to pull from I have some NAN automations uh and it gave me like all of this information. So instead I was telling it okay well create one at a time. When I did that it actually gives me the code. You can copy that code. You can actually paste it into N8N. And now you have a little uh workflow. The re I had to go through and make some edits of course, but like the reason that this will work is this idea of a web hook. So you can actually send information to a web hook. You can post that same as you would a URL. You can do authentication. So that way you can protect against malicious activity. You can also make sure that you have like the Reddit rate limiting on there so they can't submit a bunch of different emails all the time. And then after the fact when this is set and connected to Reddus, I can do my normal automation, right? I can actually take that add it to Google Sheets. So I can make that easier to put in or put in a different CRM. I can check if they're interested in a particular path. I can then email that person based on I use Plunk, but you can use any uh any kind of email tool that you want. Send the email. I can even wait two days and have it send a follow-up email. There's also the the ability to change this on voting or check if there have been duplicated responses. And then the other thing I can even do is do uh a post purchase magnet. Right? As the stripe comes through, I can process that data. I can check if it is the correct project. I can send confirmation. I can add them to different lists. Now again, the I'm not wiring those all up, but the example is is that you can take this NAN and actually apply it to your V0ero application. So now you have the ability to five code, make it a little more secure and connect it to N8N. And this is exactly what I want to teach in the hands-on courses and taking it it uh in cohorts and take it as far as you want. so that you can build out an application. All right, everyone. That's it for us today. So, what we went through were the 15 different t tips that I picked up along the way building this VIP coding retreat website. And with that, happy nerding. --- *Generated for LLM consumption from nerding.io video library*