Back to Blog

Vibe Coding A SaaS Application

David O'Regan David O'Regan
7 min read
Coding with style

As the lines between developers and non-developers continue to blur, a new paradigm of software creation is emerging called “vibe coding.” Originally coined by AI expert Andrej Karpathy, vibe coding refers to using AI tools to handle the heavy lifting of writing code while humans focus on guiding the process through natural language descriptions. In this post, I’ll explore how vibe coding is transforming SaaS application development and making it accessible to more people than ever before.

What is “Vibe Coding”?

Vibe coding is a term for coding with the assistance of AI — essentially letting AI tools do the heavy lifting while you focus on communicating what you want in plain English. As Karpathy humorously noted, “the hottest new programming language is English.” With vibe coding:

This isn’t just about making coding easier for developers—it’s about democratizing software creation entirely. Now someone with a clear vision but no programming background can bring their ideas to life.

The Tools Powering Vibe Coding for SaaS

Several powerful AI coding tools have emerged to facilitate this new approach to software development:

Cursor

Cursor is an AI-powered code editor built on Visual Studio Code that integrates AI directly into your coding environment. It provides a sidebar chat (called Composer) where you can instruct the AI to write or edit code in your files. Cursor is particularly powerful for SaaS development because:

GitHub Copilot

GitHub Copilot functions as an AI pair programmer that can generate code as you type. For SaaS applications, Copilot excels at:

Model Context Protocol (MCP) Servers

MCP servers are a newer development that extend what’s possible with vibe coding. The GitHub MCP Server specifically enables:

How Vibe Coding Works in Practice

Vibe coding follows a collaborative, iterative process between human and AI:

1. Describe What You Want

Instead of diving into code syntax, you begin by describing features in plain language:

"Create a user authentication system with sign-up, login, and password 
reset functionality. Use JWT tokens for authentication and store user 
data in a PostgreSQL database."

2. AI Generates Code

The AI interprets your description and produces code snippets, file structures, or even entire implementations:

// Generated authentication router with endpoints for login, signup, etc.
const authRouter = express.Router();

authRouter.post('/signup', async (req, res) => {
  // Validation logic
  const { email, password, name } = req.body;
  // ... more generated code
});

// ... other routes and implementation details

3. Review and Refine

You review what the AI has produced and provide feedback:

"This looks good, but we need to add email verification and 
rate limiting to prevent abuse."

4. Iterate Until Complete

This cycle continues until you have a working solution that meets your requirements.

My OBAI Project: Building with Vibe Coding

Rather than just discussing vibe coding in theory, I wanted to share a real example from my own work. I recently built a SaaS application called OBAI (https://github.com/Oregand/obai) using the vibe coding approach. This project showcases how these AI tools can dramatically accelerate development, even for experienced developers.

Project Overview

OBAI is a Next.js-based SaaS application that uses TypeScript, PostgreSQL with Prisma ORM, and modern frontend technologies. The application is deployed on Vercel and follows best practices for modern web development.

How I Used Vibe Coding Tools

Initial Project Setup with GitHub Copilot

I started the project by describing the basic architecture I wanted to Copilot:

"Set up a Next.js project with TypeScript, Prisma, PostgreSQL, and authentication. 
Include a dashboard layout with sidebar navigation and responsive design."

Copilot generated the initial project structure, including the necessary configuration files (tsconfig.json, next.config.js, etc.) and basic folder structure. This saved me hours of boilerplate setup and configuration.

Database Schema Design with Cursor

For the database schema, I used Cursor’s Composer feature to describe the entities I needed:

"Create a Prisma schema for a SaaS application with users, projects, 
and tasks. Users can belong to multiple projects, and projects can have 
multiple tasks. Include timestamps, relations, and proper indexing."

Cursor generated a complete Prisma schema with all the necessary models, relationships, and indexes. I reviewed the schema, made a few tweaks, and then used it to generate the database migrations.

API Routes with MCP Server

Using the GitHub MCP Server integration, I was able to generate complex API routes with proper error handling and validation. For example, when I needed to create an endpoint for project analytics, I described:

"Create a Next.js API route that fetches analytics data for a project. 
It should get task completion rates, user activity, and project milestones. 
Include authentication checks and rate limiting."

The MCP server had access to my repository structure and existing code patterns, so it generated an API route that perfectly matched my codebase’s style and integrated with my existing authentication system.

Troubleshooting with AI

One of the most powerful aspects of vibe coding was debugging. When I encountered an issue with the Prisma queries, I simply copied the error message into Cursor’s chat:

PrismaClientValidationError: Invalid `prisma.project.findUnique()` invocation:
{
  where: {
    id: undefined
  }
}

Cursor analyzed the error, looked at my code context, and suggested a fix:

// Change this:
const project = await prisma.project.findUnique({
  where: { id: params.id },
  include: { tasks: true }
});

// To this:
const projectId = params.id;
if (!projectId) {
  return res.status(400).json({ error: 'Project ID is required' });
}

const project = await prisma.project.findUnique({
  where: { id: projectId },
  include: { tasks: true }
});

This iterative debugging process saved countless hours of hunting through documentation and StackOverflow.

Results and Lessons Learned

Building OBAI with vibe coding tools reduced my development time by approximately 60%. Features that would normally take days were completed in hours. However, I did learn some important lessons:

  1. AI needs guidance: While the AI tools were incredibly powerful, they still needed my domain expertise and architectural decisions to create a cohesive application.

  2. Review is essential: I caught several subtle bugs and security issues by carefully reviewing the AI-generated code, particularly around authentication and database queries.

  3. Learning curve for prompts: Getting the most out of these tools required learning how to write effective prompts that provide the right context and constraints.

  4. Hybrid approach works best: I found that vibe coding wasn’t about replacing traditional coding entirely, but rather augmenting it. I still wrote critical sections by hand when necessary.

  5. Version control is crucial: Having robust git practices was essential as I iterated quickly with AI assistance. This made it easy to roll back changes that didn’t work as expected.

Overall, OBAI is a testament to how vibe coding can transform the development process, making it faster and more accessible without sacrificing quality.

Case Study: Building a SaaS Analytics Dashboard with Vibe Coding

Recently, I built an analytics dashboard for a SaaS product using vibe coding. Here’s how the process looked:

Initial Prompt

I started with a clear description of what I needed:

"I need a React dashboard that displays user engagement metrics for our 
SaaS application. It should include charts for daily active users, 
feature usage, and retention rates. The data will come from our API 
at /api/metrics. Make it responsive and use a modern UI framework."

Iterative Refinement

The AI generated a basic structure, which I then refined through conversation:

  1. “Can we add filtering by date range?”
  2. “Let’s improve the mobile layout”
  3. “Add export functionality for reports”

Technical Integration

For more complex aspects, I guided the AI with more specific instructions:

"Connect this dashboard to our authentication system so only 
admin users can access it, and implement caching to improve performance."

The entire dashboard took just a few hours instead of days, and required minimal manual coding from me. The most important part was having a clear vision and being able to articulate what I wanted.

The Benefits of Vibe Coding for SaaS Development

Speed and Efficiency

Vibe coding dramatically accelerates development time:

Accessibility for Non-Developers

Perhaps the most transformative aspect is opening software creation to people without traditional coding backgrounds:

Focus on Business Logic

Vibe coding lets you focus on what matters most—solving real business problems:

Challenges and Limitations

Despite its promise, vibe coding isn’t without challenges:

Quality Control

AI-generated code isn’t always perfect:

Complex Architecture Decisions

While AI can handle implementation, higher-level architecture decisions still benefit from human expertise:

The Learning Curve

There’s still a learning curve, albeit a different one:

The Future of SaaS Development

As vibe coding tools continue to evolve, we can expect:

  1. More Specialized Tools: AI assistants tailored specifically for SaaS development
  2. Higher-Quality Output: Improved code generation with fewer bugs and better practices
  3. End-to-End Solutions: Tools that handle not just coding but deployment and maintenance
  4. Collaborative Features: Better support for team-based vibe coding

Conclusion: Embracing the Vibe Coding Revolution

Vibe coding represents a fundamental shift in how we create software. By leveraging AI to handle the technical implementation while humans focus on vision and requirements, we’re seeing the democratization of software development in real-time.

For SaaS applications specifically, this means:

Whether you’re a seasoned developer looking to boost productivity or a non-developer with a brilliant SaaS idea, vibe coding offers a compelling path forward. The most valuable skills in this new paradigm aren’t memorizing syntax or algorithms, but clearly articulating problems and iteratively refining solutions.

As Karpathy noted, “It’s not really coding — I just see stuff, say stuff, run stuff, and copy-paste stuff, and it mostly works.” That simple description represents a profound shift in how we’ll build the next generation of SaaS applications.

What’s your experience with vibe coding? Have you used AI tools to build software? I’d love to hear your thoughts and experiences in the comments!

David O'Regan

About the Author

David O'Regan is a Senior Engineering Manager at GitHub, leading teams responsible for GitHub Copilot. With a background in frontend engineering and AI, David is passionate about the intersection of artificial intelligence and developer tooling.

Related Articles

GitHub Notifications Survival Guide: The Ultimate Cheatsheet

GitHub Notifications Survival Guide: The Ultimate Cheatsheet

Help! I’m Drowning in GitHub Notifications! 🏊‍♂️

Read more
Building an AI Navigator for GitHub's The Hub Documentation

Building an AI Navigator for GitHub's The Hub Documentation

The Challenge of Internal Documentation

Read more