<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Deepak Raaj</title>
    <description>The latest articles on DEV Community by Deepak Raaj (@deepak_raaj_247).</description>
    <link>https://dev.to/deepak_raaj_247</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3302363%2Faa36a7d2-e5ea-4d0d-9462-c5e63907687b.jpg</url>
      <title>DEV Community: Deepak Raaj</title>
      <link>https://dev.to/deepak_raaj_247</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/deepak_raaj_247"/>
    <language>en</language>
    <item>
      <title>How I built a $0/mo AI SaaS using Next.js 14 and Google Gemini</title>
      <dc:creator>Deepak Raaj</dc:creator>
      <pubDate>Tue, 06 Jan 2026 07:41:34 +0000</pubDate>
      <link>https://dev.to/deepak_raaj_247/how-i-built-a-0mo-ai-saas-using-nextjs-14-and-google-gemini-1h2k</link>
      <guid>https://dev.to/deepak_raaj_247/how-i-built-a-0mo-ai-saas-using-nextjs-14-and-google-gemini-1h2k</guid>
      <description>&lt;p&gt;I wanted to build an AI tool, but I didn't want to pay $20/mo for OpenAI. Here is how I built a "Client Email Generator" using Google's Gemini Flash model (which is free) and Vercel.&lt;br&gt;
The Stack:&lt;/p&gt;

&lt;p&gt;Next.js 14 (App Router)&lt;/p&gt;

&lt;p&gt;Tailwind CSS (for the Agency UI)&lt;/p&gt;

&lt;p&gt;Google Gemini API&lt;/p&gt;

&lt;p&gt;Resend (for emailing)&lt;br&gt;
Step 1: The AI Route &lt;/p&gt;

&lt;p&gt;**_import { NextResponse } from 'next/server';&lt;br&gt;
import { GoogleGenerativeAI } from '@google/generative-ai';&lt;/p&gt;

&lt;p&gt;const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY || "");&lt;/p&gt;

&lt;p&gt;export async function POST(request: Request) {&lt;br&gt;
  try {&lt;br&gt;
    const body = await request.json();&lt;br&gt;
    const { ticketText } = body;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const model = genAI.getGenerativeModel({ model: "gemini-2.5-flash" }); 

const prompt = `Rewrite this technical Jira ticket for a non-technical client: ${ticketText}`;

const result = await model.generateContent(prompt);
const response = await result.response;
const rewrittenText = response.text();

return NextResponse.json({ rewrittenText });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;} catch (error: any) {&lt;br&gt;
    console.error("❌ ERROR:", error);&lt;br&gt;
    return NextResponse.json({ error: error.message }, { status: 500 });&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
Explanation: This code takes the prompt and sends it to Google...&lt;/p&gt;

&lt;p&gt;Step 2: The UI I used a "Navy &amp;amp; Teal" theme to make it look professional.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhaknoegscklufjbi0afa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhaknoegscklufjbi0afa.png" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Result: It works perfectly. I can paste a Jira ticket and get a client email instantly.&lt;/p&gt;

&lt;p&gt;Want the Source Code? I am selling the entire project (Source Code + Repo + Setup Guide) as a "Starter Kit" for anyone who wants to launch their own AI SaaS.&lt;br&gt;
Check it out here: &lt;a href="https://indiemaker.com/listings/statussync-production-ready-ai-saas-nextjs-14-gemini-email-crm" rel="noopener noreferrer"&gt;https://indiemaker.com/listings/statussync-production-ready-ai-saas-nextjs-14-gemini-email-crm&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
