Paste a Google Maps link to scrape the business name, address, phone number, reviews, photos, and opening hours
Mapody — Next.js Admin dashboard Template
By agrosevakmak
Mapody is a Next.js-based SaaS backend template that scrapes Google Maps links into business data, generates content with AI, and publishes it as a multi-page website, complete with an editor and analytics dashboard.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Call OpenAI to generate page rewrites, taglines, FAQs, image alt text, and review sentiment analysis
Drag-and-drop multi-page editor with preset themes or custom colors, fonts, and styles
Per-site analytics dashboard for page views, unique visitors, sources, and top pages
Built-in contact form, credits system, Stripe upgrade entry point, and dark mode
Email/password and GitHub OAuth login, including email verification and password reset
Template Details
Mapody is a SaaS backend template built with Next.js App Router and TypeScript. Its core workflow is converting Google Maps links into publishable websites. After a user pastes a link, the template uses Apify to scrape the business name, address, phone number, reviews, photos, and opening hours, then calls the OpenAI API to generate page copy, taglines, FAQs, image alt text, and review sentiment analysis. It then lets users adjust everything in a drag-and-drop multi-page editor and publish to a dedicated subdomain with one click.
The backend includes user authentication (email/password and GitHub OAuth, email verification, password reset), per-site analytics dashboards for page views, unique visitors, sources, and top pages, a built-in contact form, a credits system with a Stripe upgrade entry point, and global dark mode. The data layer uses PostgreSQL with Prisma, file uploads go through AWS S3, emails are sent via Nodemailer, and state management uses Zustand.
The template depends on multiple external services, and you must provide your own keys for the database, Apify, OpenAI, AWS S3, SMTP, and Google Maps Embed. The repository is MIT-licensed, but third-party assets such as demo images, fonts, and icons, as well as external services like domains, hosting, databases, payments, and AI calls, may be charged separately or subject to their own terms.
Is it right for your project?
Use Cases
- Quickly generate a showcase website for a local business and observe traffic data
- Use as a SaaS backend template to build a multi-tenant site publishing and credits billing product
- Learn how scraping, AI generation, an editor, and an analytics dashboard combine under Next.js App Router
- Validate the Google Maps scraping and AI content generation workflow in a demo environment
Suitable For
- Developers who need a ready-made SaaS backend skeleton and are willing to integrate external APIs
- Frontend or full-stack engineers familiar with Next.js, TypeScript, Prisma, and PostgreSQL
- Technical teams looking to study how map data scraping and AI content generation can be combined
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Node.js 18+, a PostgreSQL database, and keys for Apify, OpenAI, AWS S3, SMTP, and Google Maps Embed
- 2
After cloning the repository, run npm install, configure variables such as DATABASE_URL, NEXTAUTH_SECRET, and NEXTAUTH_URL in .env.local, and optionally configure GitHub OAuth
- 3
Run npx prisma db push to sync the database schema, then run npm run dev to start the development server
- 4
The MIT license covers only the code; third-party assets such as demo images, fonts, and icons, as well as external services, require separate license and cost checks
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis listing covers the free version in the public repository under the MIT license; the free scope is the code of that version and does not mean external services or third-party assets are free.
Must comply with when using
- You may use, modify, commercialize, and distribute the code of this version for free.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur separate charges.
- Using the Google Maps scraping feature requires registering your own Apify account; it is an external service dependency and may incur costs.
- The AI content generation feature requires your own OpenAI API key; calls are billed by OpenAI and are an external paid service.
- An Apify API Token must be configured to use the scraping feature; you need to register on the Apify platform and obtain one.
- An OpenAI API Key must be configured to use the AI generation feature; you need to register on the OpenAI platform and obtain one.
- The file upload feature depends on AWS S3; you need your own AWS access keys and must bear S3 storage costs.
- The map embed feature requires a Google Maps API Key; it must be enabled in Google Cloud and may incur costs.
- Email sending depends on your own SMTP service; you need to configure a mail server account, which may incur costs.
- The credits system has a free quota cap; beyond that, a paid upgrade via Stripe is required, which is a paid upgrade limitation.
- You need your own PostgreSQL database; the example uses Neon, which is an external service dependency and may incur costs.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
- Apify account (for Google Maps scraping)
Original README
- OpenAI API key (for AI content generation)
Original README
APIFY_API_TOKEN=""
Original README
OPENAI_API_KEY=""
Original README
AWS_ACCESS_KEY_ID=""
Original README
GOOGLE_MAPS_API_KEY=""
Original README
SMTP_HOST=""
Original README
- **Credit System** — Free tier with credit limits, upgradeable via Stripe
Original README
https://github.com/agrosevakmak/Mapody/blob/main/LICENSEhttps://github.com/agrosevakmak/Mapody/blob/main/README.md- PostgreSQL database (e.g. [Neon](https://neon.tech/))
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-13. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 85 / 100
- Technologies
- Next.js · React
- Website type
- Admin dashboard · SaaS
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-06-08
- Screenshot last checked
- 2026-10-13
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-13
Inspect the recorded source material
SHA-256: 52be202c101458b004733a7cafe054f51570699a1ef591d8efd955fcf0a84c48
2026-10-13T09:28:13.071Z
Source file / repository# Mapody **Turn Google Maps links into beautiful websites in 60 seconds.** Paste a Google Maps link, and Mapody scrapes the business data, generates AI-powered content, and publishes a multi-page website with analytics, custom themes, and a contact form — all in one click. [](LICENSE) [](https://nextjs.org/) [](https://www.typescriptlang.org/) [](https://www.prisma.io/) [](https://tailwindcss.com/) [](https://www.postgresql.org/) --- ## Features - **Google Maps Scraping** — Paste any Google Maps link, extract business name, address, phone, reviews, photos, and hours - **AI Content Generation** — Auto-generate page rewrites, taglines, FAQs, alt text, and sentiment analysis - **Multi-Page Editor** — Drag-and-drop page manager with live preview - **Custom Themes** — Choose from preset themes or create your own with custom colors, fonts, and styles - **Analytics Dashboard** — Track page views, unique visitors, referrers, and top pages per site - **Contact Forms** — Built-in contact form on every published site with spam protection - **One-Click Publishing** — Deploy to a unique subdomain instantly - **User Authentication** — Email/password + GitHub OAuth, email verification, password reset - **Credit System** — Free tier with credit limits, upgradeable via Stripe - **Dark Mode** — Full dark mode support across the app ## Tech Stack | Category | Technology | |---|---| | **Framework** | [Next.js 15](https://nextjs.org/) (App Router) | | **Language** | [TypeScript 5](https://www.typescriptlang.org/) | | **Styling** | [Tailwind CSS 3](https://tailwindcss.com/) | | **Database** | [PostgreSQL](https://www.postgresql.org/) via [Neon](https://neon.tech/) | | **ORM** | [Prisma 6](https://www.prisma.io/) | | **Authentication** | [NextAuth.js](https://next-auth.js.org/) (JWT + Credentials + GitHub OAuth) | | **State Management** | [Zustand](https://zustand-demo.pmnd.rs/) | | **Email** | [Nodemailer](https://nodemailer.com/) | | **Web Scraping** | [Apify](https://www.apify.com/) (Google Maps scraper) | | **AI** | OpenAI API (content generation) | | **File Storage** | AWS S3 (via `@aws-sdk/client-s3`) | | **Deployment** | [Vercel](https://vercel.com/) | ## Getting Started ### Prerequisites - Node.js 18+ - PostgreSQL database (e.g. [Neon](https://neon.tech/)) - Apify account (for Google Maps scraping) - OpenAI API key (for AI content generation) ### Installation ```bash git clone https://github.com/agrosevakmak/Mapody.git cd Mapody npm install ``` ### Environment Variables Create a `.env.local` file: ```env # Database DATABASE_URL="postgresql://..." # Auth NEXTAUTH_SECRET="your-secret-here" NEXTAUTH_URL="http://localhost:3000" # GitHub OAuth (optional) GITHUB_CLIENT_ID="" GITHUB_CLIENT_SECRET="" # Apify (Google Maps scraping) APIFY_API_TOKEN="" # OpenAI (AI content generation) OPENAI_API_KEY="" # AWS S3 (file uploads) AWS_ACCESS_KEY_ID="" AWS_SECRET_ACCESS_KEY="" AWS_BUCKET_NAME="" AWS_REGION="" # SMTP (email delivery) SMTP_HOST="" SMTP_PORT="587" SMTP_USER="" SMTP_PASSWORD="" SMTP_FROM="[email protected]" # Google Maps Embed GOOGLE_MAPS_API_KEY="" ``` ### Setup ```bash # Run database migrations npx prisma db push # Start development server npm run dev ``` Open [http://localhost:3000](http://localhost:3000). ## Project Structure ``` Mapody/ ├── prisma/ # Database schema & migrations │ ├── schema.prisma │ └── migrations/ ├── public/ # Static assets ├── src/ │ ├── app/ # Next.js App Router pages │ │ ├── api/ # API routes │ │ │ ├── ai/ # AI endpoints (rewrite, tagline, faq, alttext, sentiment) │ │ │ ├── auth/ # Authentication (login, signup, forgot-password, verify) │ │ │ ├── sites/ # Site CRUD, pages, publish, duplicate │ │ │ ├── user/ # Profile, credits, theme, preferences │ │ │ ├── contact/ # Contact form handler │ │ │ ├── tracking/ # Analytics tracking │ │ │ ├── upload/ # File upload (S3) │ │ │ ├── scrape/ # Google Maps scraping proxy │ │ │ └── analytics/ # Analytics data endpoint │ │ ├── auth/ # Auth pages (login, signup, forgot-password, verify) │ │ ├── dashboard/ # User dashboard │ │ ├── editor/ # Site editor │ │ ├── preview/ # Site preview │ │ ├── analytics/ # Analytics dashboard │ │ ├── pricing/ # Pricing page │ │ ├── settings/ # User settings │ │ └── support/ # Support page │ ├── components/ # React components │ ├── lib/ # Utilities & services │ │ ├── ai.ts # OpenAI integration │ │ ├── apify.ts # Apify scraping client │ │ ├── auth.ts # NextAuth config │ │ ├── email.ts # Nodemailer email service │ │ ├── prisma.ts # Prisma client │ │ ├── s3.ts # AWS S3 uploads │ │ └── utils.ts # Shared utilities │ ├── middleware.ts # Rate limiting middleware │ ├── store/ # Zustand state management │ └── types/ # TypeScript declarations ├── .gitignore ├── LICENSE ├── next.config.mjs ├── package.json ├── tailwind.config.ts └── tsconfig.json ``` ## API Routes | Method | Endpoint | Description | |---|---|---| | POST | `/api/scrape` | Scrape Google Maps data from a URL | | POST | `/api/ai/rewrite` | Generate AI page content | | POST | `/api/ai/tagline` | Generate a business tagline | | POST | `/api/ai/faq` | Generate FAQ entries | | POST | `/api/ai/alttext` | Generate image alt text | | POST | `/api/ai/sentiment` | Analyze review sentiment | | GET/POST | `/api/sites` | List or create sites | | GET/PUT/DELETE | `/api/sites/[id]` | Manage a site | | POST | `/api/sites/[id]/publish` | Publish a site | | POST | `/api/sites/[id]/duplicate` | Duplicate a site | | GET/POST | `/api/sites/[id]/pages` | List or add pages | | PUT/DELETE | `/api/sites/[id]/pages/[pageId]` | Update or delete a page | | POST | `/api/contact` | Submit a contact form | | POST | `/api/tracking` | Record a page view | | POST | `/api/upload` | Upload a file to S3 | | GET/PUT | `/api/user/profile` | Get or update user profile | | GET/POST | `/api/user/credits` | Check or use credits | | PUT | `/api/user/theme` | Save user theme | | GET/PUT | `/api/user/preferences` | Get or update preferences | | POST | `/api/analytics` | Get analytics data | ## Security Features - **Rate Limiting** — Global middleware with per-route limits (scrape: 5/min, auth: 3/5min, AI: 20/min) - **Input Validation** — Zod schemas for all API inputs, HTML sanitization on user content - **Ownership Checks** — All site/page operations verify user ownership - **Atomic Operations** — Credit deduction uses raw SQL to prevent race conditions - **Secure Tokens** — OTP generation uses `crypto.randomInt()` instead of `Math.random()` - **Session Security** — JWT strategy with httpOnly cookies, CSRF protection ## Contributing Contributions are welcome! Please open an issue or submit a pull request. ## License This project is licensed under the [MIT License](LICENSE). --- Built with care by [agrosevakmak](https://github.com/agrosevakmak)
Explore similar templates
Compare previews and descriptions within the same stack and category.

Next.js SaaS Starter
The official Next.js SaaS starter template, integrating email/password authentication, Stripe Checkout subscriptions, a dashboard with user/team CRUD, basic Owner/Member RBAC, and activity logging.
Next.js · SaaS

SaaS-Boilerplate
SaaS-Boilerplate is an open-source SaaS starter template built with Next.js App Router, React 19, TypeScript, Tailwind CSS, and Shadcn UI.
Next.js · SaaS

next-shadcn-dashboard-starter
An MIT-licensed admin dashboard starter built with Next.js 16, shadcn/ui, Tailwind CSS v4, and TypeScript.
Next.js · Admin dashboard

create-t3-turbo
A full-stack TypeScript monorepo starter from T3 OSS, listed in the Vercel template directory. It splits apps for Next.js, Expo and optional TanStack Start, with shared packages for tRPC v11, better-auth, Drizzle + Supabase and shadcn/ui.
Next.js · Starter

saas-starter-kit
BoxyHQ's open-source Next.js enterprise SaaS starter template provides a reusable foundation with authentication, team management, SAML SSO, directory sync, webhooks, audit logs, and Stripe payments.
Next.js · SaaS

Studio Admin · Radix UI
Studio Admin is an admin dashboard template built with Next.js 16, TypeScript, Tailwind CSS v4, and Shadcn UI.
Next.js · Admin dashboard
