๐ AI Travel Studio
August 2, 2026 ยท View on GitHub
Place yourself into iconic travel destinations worldwide with photorealistic AI in seconds. A production-ready, self-hostable Next.js SaaS boilerplate with destination scene presets (Paris, Kyoto, Maldives, Colosseum), webhook-backed async delivery, and built-in Stripe billing. A free open-source alternative to Teleport AI and Picsart โ 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: Travel content creators ยท Social media influencers ยท Virtual tourism ยท Holiday gift photos ยท Personalized travel keepsakes ยท Event marketing ยท Tourism brand promotions ยท Photo gifting apps

https://github.com/user-attachments/assets/9fa1782c-2c27-4797-8c53-49a01d5d8cdf
Related Projects
- MuAPI image playground โ Try image-generation and editing models for travel scenes.
- MuAPI access keys โ Create the API key used by this app.
๐ Project Details
GitHub Repository: github.com/SamurAIGPT/ai-travel-studio
Live Demo: ai-travel-studio.vercel.app
FutureTravel AI is a premium SaaS web application that places users in gorgeous global landmarks using advanced deep learning. Users upload a photo, select standard vs pro models, configure target resolutions and aspect ratios, and interactively compare before/after images using a drag slider.
โจ Core Features
๐ AI Travel Studio (Main Page /)
- Upload portrait selfie via drag-and-drop or file selector
- Fully interactive guest preview mode allowing unauthenticated users to explore settings, presets, and sliders, immediately prompting OAuth sign-in only when action triggers are clicked.
- Dual AI Models:
- Standard (nano-banana-2-edit): Fast generation with Google concept search tuning.
- Pro (nano-banana-pro-edit): High-fidelity enhanced predictions with detailed facial structure modeling.
- 12 Landmark Presets with pre-filled prompts and absolute location indicators directly on the image:
- ๐ผ Paris (Eiffel Tower) โ Sunset golden hour view in front of the Eiffel Tower.
- ๐ธ Tokyo (Cherry Blossoms) โ Kyoto/Tokyo streets lined with blooming cherry blossoms.
- ๐๏ธ Rome (Colosseum) โ Sunny morning blogger posture before the historic amphitheater.
- ๐๏ธ Maldives (Sandy Beach) โ Pristine white sands and crystal clear turquoise ocean background.
- ๐ซ Egypt (Pyramids) โ Adventurous desert dunes alongside the Pyramids of Giza.
- โ๏ธ Swiss Alps (Snow Mountains) โ Cozy winter mountains and snow peaks in Zermatt.
- ๐๏ธ New York (Times Square) โ Vibrant city night life surrounded by glowing billboards.
- ๐ Agra (Taj Mahal) โ Pastel sunrise reflection over the white marble wonder.
- โต Sydney (Opera House) โ Sunny harbour snapshot at the iconic Circular Quay.
- ๐ฐ๏ธ London (Big Ben) โ Classic double-decker bus passing along Westminster bridge.
- ๐ฟ Bali (Jungle Waterfall) โ Vibrant tropical jungle streams and mist adventure.
- ๐ถ Venice (Gondola Canal) โ Romantic gondola ride floating by pastel buildings.
- Dynamic Variable Pricing based on Model and Resolution:
- Standard Model (v2 Edit):
- 1K Resolution: 12 credits
- 2K Resolution: 18 credits
- 4K Resolution: 24 credits
- Pro Model (Enhanced):
- 1K & 2K Resolution: 24 credits
- 4K Resolution: 36 credits
- Standard Model (v2 Edit):
- Draggable Before/After vertical split comparison slider to reveal portrait travel swaps.
๐ผ๏ธ Personal Creations Gallery (/gallery)
- Responsive CSS grid of completed travel photos.
- Detail view modal with full Before/After draggable comparison slider.
- Server-side CORS-bypass download proxy (HD download).
- Auto-refresh gallery every 4 seconds to poll processing generations.
๐ณ Stripe Credit Billing (/pricing)
- Four one-time credit packs (no subscriptions):
- Basic Pack ($5 / 1,000 credits โ ~83 standard runs)
- Standard Pack ($10 / 2,000 credits โ ~166 standard runs)
- Professional Pack ($20 / 4,000 credits โ ~333 standard runs โ Best Value)
- Business Pack ($50 / 10,000 credits โ ~833 standard runs)
๐ Google Auth & live balance syncing
- NextAuth Google Provider with Prisma PostgreSQL adapter.
- Pulse credit balances display in Navbar.
โก Deployment: Vercel & Production
๐ Required Environment Variables
| Service | Variable | Description |
|---|---|---|
| Database | DATABASE_URL | PostgreSQL connection string (Supabase pooled connection) |
DIRECT_URL | Direct PostgreSQL connection string | |
| NextAuth | NEXTAUTH_SECRET | Secure random string via openssl rand -base64 32 |
NEXTAUTH_URL | Your production domain | |
WEBHOOK_URL | Public URL for MuAPI async callbacks | |
| Google OAuth | GOOGLE_CLIENT_ID | Google Cloud Console OAuth |
GOOGLE_CLIENT_SECRET | Google Cloud Console OAuth | |
| Stripe | STRIPE_SECRET_KEY | Stripe Secret Key |
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY | Stripe Publishable Key | |
STRIPE_WEBHOOK_SECRET | Webhook signing secret | |
| AI | MUAPIAPP_API_KEY | Get from muapi.ai |
๐ Production Deployment Setup
- Database: Spin up a PostgreSQL instance.
- Import: Import the forked repo into Vercel.
- Environment: Add all required env keys listed above.
- Build Script: Project builds automatically using
prisma generate && next build. - Database sync: Run
npx prisma db pushto generate tables. - Callbacks:
- Google:
https://ai-travel-studio.vercel.app/api/auth/callback/google - Stripe Webhook:
https://ai-travel-studio.vercel.app/api/stripe/webhook - MuAPI:
https://ai-travel-studio.vercel.app/api/webhook/muapi
- Google:
๐ ๏ธ Local Development
Prerequisites
- Node.js v18+
- PostgreSQL connection string
Steps
# 1. Clone the repository
git clone https://github.com/SamurAIGPT/ai-travel-studio
cd ai-travel-studio
# 2. Install dependencies
npm install
# 3. Setup local environment
cp .env.example .env
# Fill in credentials
# 4. Generate Client & Sync DB
npx prisma generate
npx prisma db push
# 5. Start dev server
npm run dev
โ ๏ธ Database Safety Warning (Shared Pool)
The database is shared across multiple applications. Running npx prisma db push on a clean schema will drop other apps' tables. Always follow the Pull-Declare-Push-Cleanup sequence:
npx prisma db pullโ Introspect all existing tables intoschema.prisma- Add your
TravelStudiomodel and itsUserrelation npx prisma db pushโ Safely add new tables and relations- Clean
schema.prismato keep onlyAccount,Session,User,VerificationToken,TravelStudio npx prisma generateโ Rebuild the type-safe Prisma client
๐๏ธ Technical Architecture
ai-travel-studio/
โโโ prisma.config.ts # Dynamic datasource for Prisma v7
โโโ prisma/
โ โโโ schema.prisma # TravelStudio model + NextAuth tables
โโโ src/
โ โโโ app/
โ โ โโโ page.js # Studio Page (upload, presets left sidebar, custom prompt, comparison slider)
โ โ โโโ gallery/page.js # Personal creations gallery
โ โ โโโ pricing/page.js # Stripe pricing plans
โ โ โโโ api/
โ โ โโโ auth/ # NextAuth route handler
โ โ โโโ upload/ # CDN upload proxy
โ โ โโโ generation/ # Credit deduction & variable resolution trigger
โ โ โโโ creations/ # GET/DELETE creations with self-healing polling
โ โ โโโ download/ # CORS-bypass download proxy
โ โ โโโ webhook/muapi/ # MuAPI async callback webhook
โ โ โโโ stripe/ # Stripe checkout session + webhook
โ โโโ components/
โ โ โโโ Providers.jsx # Auth session provider wrapper
โ โ โโโ layout/Navbar.jsx # Sticky navigation and control headers
โ โโโ lib/
โ โโโ auth.js # Auth config
โ โโโ config.js # Resolution variable costs (12, 24, 36) and plans
โ โโโ prisma.js # Singleton Prisma client connection pool
โ โโโ stripe.js # Stripe configuration
โ โโโ services/
โ โโโ user.js # Credits deduction service
โ โโโ billing.js # stripe session helper
โโโ next.config.mjs # Next image routing config
๐ License
MIT Licensed.
FutureTravel AI: A premium, gold-themed AI background swap SaaS built with the Inter font family and Nano Banana.