๐Ÿพ AI Pet Portrait Generator

June 29, 2026 ยท View on GitHub

Transform pet photos into stunning oil paintings, royal portraits, cartoons, and art masterpieces in seconds. A production-ready, self-hostable Next.js SaaS boilerplate built for pet lovers, custom portrait businesses, and DTC apps โ€” replaces $30โ€“$80 custom pet portrait services. A free open-source alternative to Portrait My Pet, PetPainting AI, and Paint Your Pet โ€” powered by the MuAPI AI engine.

Tech stack: Next.js 14 (App Router) ยท Prisma ยท PostgreSQL ยท NextAuth (Google OAuth) ยท Stripe ยท Tailwind CSS ยท MuAPI nano-banana-2-edit ยท Webhook-backed async delivery Use cases: Custom pet portrait shops ยท Print-on-demand pet gifts ยท Pet lover communities ยท Dog & cat art generators ยท Pet brand marketing ยท Etsy-style digital pet art ยท Animal shelter fundraisers ยท Pet influencer content

AI Pet Portrait Generator Interface Screenshot

Awesome Generative AI Apps

๐ŸŽจ Explore 50+ more open-source AI apps โ†’

https://github.com/user-attachments/assets/c366dedb-986f-4826-82b3-42c0257d00f6

๐ŸŒ Project Details

GitHub Repository: github.com/SamurAIGPT/ai-pet-portrait

Live Demo Preview: ai-pet-portrait-two.vercel.app


AI Pet Portrait Generator is a production-ready, highly-optimized AI web application. Out of the box, it seamlessly manages User Authentication, Credits & Billing, Image Persistence, and asynchronous pet art generation using a sleek Next.js (App Router) architecture. It empowers users to upload up to 5 photos of their pets and apply custom prompt styling to render beautiful pet portraits.

Why use AI Pet Portrait Generator?

  • Production-Ready SaaS โ€” Complete with Google OAuth and Stripe Checkout workflows built-in.
  • Multi-Image Upload Studio โ€” Upload up to 5 pet photos, write custom prompts, and see results instantly.
  • Webhook-Backed AI Delivery โ€” MuAPI async webhook delivers results directly into the database (/api/webhook/muapi), keeping API routes non-blocking and preventing request timeouts.
  • Personal Showroom Gallery โ€” All generated portraits are saved to PostgreSQL. Users can review, download, and delete their designs from /gallery.
  • Responsive Screen-Fitting โ€” Designed with a fluid layout that fits perfectly on all screens (mobile, tablet, desktop) using stacked adaptive grids on mobile and viewport-locked scrolling on desktop.

โœจ Core Features

๐Ÿพ AI Pet Art Studio (Main Page /)

  • Multi-image uploads via file picker or drag-and-drop: upload up to 5 photos of your pet for high-accuracy results.
  • Customizable prompt styling to specify style (e.g. oil painting, royal robes, space astronaut) and details.
  • Cost: 12 credits per AI Pet Portrait simulation.
  • Visual card grid of all generated pet portraits.
  • Cards show a thumbnail, creation date, and options to review, download, or delete.
  • Full-screen viewer modal with a grid overlay of the original input photos for reference, along with Download HD and Delete Result actions.

๐Ÿ’ณ Stripe Credit Billing (/pricing)

  • Four credit packs based on a $1 = 200 credits conversion rate:
    • Basic Pack ($5 / 1,000 credits)
    • Standard Pack ($10 / 2,000 credits)
    • Professional Pack ($20 / 4,000 credits โ€” Most Popular)
    • Business Pack ($50 / 10,000 credits)
  • No recurring subscriptions โ€” pay once, use at your own pace.
  • Credit balance is automatically topped up via Stripe webhook on checkout completion.

๐Ÿ” Google Auth + Credit Persistence

  • NextAuth Google provider with Prisma adapter โ€” user sessions, credit balances, and galleries are all persisted per account.
  • Credits displayed live in the Navbar with a pulsing coin icon.

โšก Deployment: Vercel & Production

This architecture is engineered explicitly for Vercel serverless environments.

One-Click Deploy

Deploy with Vercel

Live App: ai-pet-portrait-two.vercel.app

๐Ÿ”‘ Required Environment Variables

To successfully deploy and run, you must populate the following environment variables in your Vercel project settings:

ServiceVariableDescription & Source
DatabaseDATABASE_URLPostgreSQL connection string (Supabase or Neon)
NextAuth / GoogleNEXTAUTH_SECRETSecure random string generated via openssl rand -base64 32
NEXTAUTH_URLYour production domain (e.g. https://my-app.vercel.app)
WEBHOOK_URLPublic URL for MuAPI async callbacks (same as NEXTAUTH_URL in production)
GOOGLE_CLIENT_IDGet from Google Cloud Console
GOOGLE_CLIENT_SECRETGet from Google Cloud Console
Stripe BillingSTRIPE_SECRET_KEYGet from Stripe Dashboard
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEYGet from Stripe Dashboard
STRIPE_WEBHOOK_SECRETWebhook secret for resolving credit purchases
AI GenerationMUAPIAPP_API_KEYCreate an account and get key from muapi.ai

๐Ÿš€ Launching on Vercel: Step-by-Step

  1. Database Provisioning: Create a new Postgres database (via Supabase or Neon). Retrieve the connection string (DATABASE_URL).
  2. Project Creation: Import your GitHub fork into the Vercel dashboard.
  3. Configure Environment Variables: Copy the variables above into the Vercel project settings environment tab.
  4. Deploy: Hit "Deploy". Vercel will automatically run the build steps (npm run build).
  5. Database Push: Run npx prisma db push to synchronize database models before launching.
  6. Integrations Setup:
    • Establish a Google Cloud OAuth app, enabling the callback URL: https://your-app.vercel.app/api/auth/callback/google
    • Setup a Stripe Webhook, pointing to https://your-app.vercel.app/api/stripe/webhook and selecting the checkout.session.completed event.
    • Register a MuAPI Webhook pointing to https://your-app.vercel.app/api/webhook/muapi to receive async generation results.

๐Ÿ› ๏ธ Local Development

Ready to iterate locally? Setup is straightforward.

Prerequisites

  • Node.js (v18 or higher)
  • A local PostgreSQL instance or a free cloud Database URL.
  • ngrok (optional, for local MuAPI webhook testing)

Setup

# 1. Clone the repository
git clone https://github.com/SamurAIGPT/ai-pet-portrait
cd ai-pet-portrait

# 2. Install dependencies
npm install

# 3. Setup Environment
cp .env.example .env
# Open .env and insert your specific keys.

# 4. Initialize Database Schema
# Note: Because the database is shared, see the Safety Warning below!
npx prisma generate
npx prisma db push

# 5. Start the Development Server
npm run dev

The console should now be active on http://localhost:3000.

Webhook Tip: For local MuAPI webhook testing, run ngrok http 3000 and set WEBHOOK_URL to the generated HTTPS URL in your .env.


โš ๏ธ Database Safety Warning (Shared Pool)

The database workspace is shared with other applications. Running npx prisma db push on a clean, empty schema will drop tables belonging to other applications. Always follow this sequence to perform safe schema synchronization:

  1. Run npx prisma db pull to fetch all database tables.
  2. Declare your PetPortraitCreation table and update the relations on the User model.
  3. Run npx prisma db push --accept-data-loss to add your changes safely.
  4. Clean up schema.prisma to keep only NextAuth models, PetPortraitCreation, and the updated User relations.
  5. Run npx prisma generate to rebuild the type-safe client.

๐Ÿ—๏ธ Technical Architecture

ai-pet-portrait/
โ”œโ”€โ”€ prisma/
โ”‚   โ”œโ”€โ”€ prisma.config.ts        # Dynamic datasource settings for Prisma
โ”‚   โ””โ”€โ”€ schema.prisma           # Postgres schema (User, Account, Session, PetPortraitCreation)
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ app/                    # Next.js App Router
โ”‚   โ”‚   โ”œโ”€โ”€ page.js             # Main Pet Portrait Studio Workspace
โ”‚   โ”‚   โ”œโ”€โ”€ gallery/            # Dedicated showroom gallery view grid
โ”‚   โ”‚   โ”œโ”€โ”€ pricing/            # 4-Plan credit pricing grid (\$1 = 200 credits)
โ”‚   โ”‚   โ””โ”€โ”€ api/
โ”‚   โ”‚       โ”œโ”€โ”€ auth/           # NextAuth handler
โ”‚   โ”‚       โ”œโ”€โ”€ upload/         # MuAPI file upload proxy
โ”‚   โ”‚       โ”œโ”€โ”€ generation/     # Credit deduction + MuAPI trigger endpoint
โ”‚   โ”‚       โ”œโ”€โ”€ creations/      # GET / DELETE creations history (with webhook bypass sync)
โ”‚   โ”‚       โ”œโ”€โ”€ webhook/muapi/  # MuAPI async webhook callback handler
โ”‚   โ”‚       โ””โ”€โ”€ stripe/         # Stripe checkout creation + checkout webhook
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ Providers.jsx       # NextAuth SessionProvider wrapper
โ”‚   โ”‚   โ””โ”€โ”€ layout/Navbar.jsx   # Sticky header with Hamburger, Vercel Deploy & credit balance
โ”‚   โ””โ”€โ”€ lib/
โ”‚       โ”œโ”€โ”€ auth.js             # NextAuth config with Prisma adapter
โ”‚       โ”œโ”€โ”€ config.js           # Central config mapping Google, Stripe, MuAPI keys
โ”‚       โ”œโ”€โ”€ prisma.js           # Cached Prisma client singleton
โ”‚       โ”œโ”€โ”€ stripe.js           # Stripe instance initializer
โ”‚       โ””โ”€โ”€ services/
โ”‚           โ”œโ”€โ”€ user.js         # Credit management service (12 credits per run)
โ”‚           โ””โ”€โ”€ billing.js      # Stripe checkout and payment webhook parser
โ””โ”€โ”€ next.config.mjs             # Next.js configuration

๐Ÿ“„ License

MIT Licensed.


AI Pet Portrait Generator: A premium, high-contrast, fully responsive pet portrait studio built with the Inter font family.