Next.jsReactDirectory siteCorporate WebsiteStarter

yatmo-nextjs-starter — Next.js Directory site Template

By Yatmo

A Next.js App Router starter template for real estate listing pages that uses Yatmo to server-render neighbourhood maps, points of interest, schools and travel times, and outputs search-engine-indexable neighbourhood text.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Listing detail pages server-render the Yatmo neighbourhood map, output an iframe and do not rely on client-side JavaScript

02

Displays the nearest schools, nurseries, shops and public transport, along with walking times

03

Neighbourhood text is output as part of the HTML and can be indexed by search engines and AI assistants

04

generateMetadata uses the first sentence of the neighbourhood text to generate the description and outputs JSON-LD RealEstateListing

05

Supports discreet listings: dots instead of pins, with street names and coordinates hidden

06

Yatmo calls are cached for 30 days via unstable_cache, and no data is requested during the build phase

Template Details

This is a Next.js starter template for real estate listing detail pages, with the core purpose of embedding Yatmo neighbourhood data into listing pages. The pages are built with the App Router and React server components, written in TypeScript. Maps, points of interest, travel times, isochrones and routes are rendered through the <YatmoMap> component from @yatmo/react, which generates an iframe on the server and injects no JavaScript into the client. The nearest schools, nurseries, shops and public transport, along with walking times, are displayed by the <YatmoPois> component, with data fetched on the server. The neighbourhood text (covering education, shopping, transport, roads, leisure and neighbouring cities) is rendered by <YatmoNeighbourhoodText> and output as part of the HTML, making it easy for search engines and AI assistants to index.

Data fetching uses @yatmo/sdk with a backend key and is cached for 30 days via unstable_cache. For SEO, generateMetadata uses the first sentence of the neighbourhood text to generate the page description, and also outputs JSON-LD RealEstateListing structured data. Listings support a discreet flag: when enabled, the map shows dots instead of pins, the street does not appear in the title, and coordinates are not included in the JSON-LD.

The template includes three sample listings in lib/listings.ts, which need to be replaced with your own API or database. Pages render on first request and revalidate daily, with Yatmo results cached for 30 days; no requests are made during the build phase, so npm run build can be executed without keys. Before use, you need to obtain a backend key and a frontend key from Yatmo; the frontend key is bound to a domain, and localhost must be added for local development. Yatmo is a paid service for real estate portals, agent networks and developers, and a licence key is required; the code itself is MIT licensed.

Next.jsReactDirectory siteCorporate WebsiteStarter

Is it right for your project?

Use Cases

  • Building listing detail pages for a real estate portal that need to show nearby amenities and commuting information
  • Adding location-based neighbourhood introduction content to an agent or developer website
  • Integrating Yatmo map and points-of-interest components into an existing Next.js App Router project
  • Scenarios that require server-rendered neighbourhood text to improve listing page SEO

Suitable For

  • Developers of real estate websites using Next.js App Router and TypeScript
  • Real estate portals, agent networks and developers that already hold or plan to purchase a Yatmo licence
  • Teams that need to integrate neighbourhood data and structured data into listing pages

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Obtain a backend key and a frontend key at yatmo.com; the frontend key must be bound to a domain, and localhost must be added for local development

  2. 2

    Copy .env.example to .env.local and fill in the two keys and the country code

  3. 3

    Run npm install and then npm run dev; the default address is http://localhost:3000

  4. 4

    The three sample listings in lib/listings.ts need to be replaced with your own API or database

  5. 5

    Yatmo is a paid service and requires a licence key; the code is MIT licensed, and third-party assets require separate licence verification

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT licence in a public repository; the free scope is the code of that version and does not mean that external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercially use and distribute the code of this version free of charge.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT licence notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original licence and applicable law.

Additional costs & items to verify

  • Using the template requires first obtaining a Yatmo licence key from yatmo.com: the backend key is used on the server, and the frontend key is used for maps; the frontend key is bound to a domain, and localhost must be added for local development.
  • The code itself is MIT licensed, but Yatmo is a paid service for real estate portals, agent networks and developers, and a licence key is required to use its data and components.
  • Searching by commute time, map listing lists and other map features are advanced capabilities that require the JavaScript plugin or YatmoInteractiveMap in @yatmo/react and may involve additional fees or licensing.
  • Ratings, listing enhancements, isochrones, routes, geocoding, static map images and other capabilities are used through @yatmo/sdk and the Yatmo API and fall within the paid service scope.
  • Demo images, fonts, icons and other third-party assets must be checked against their respective licences and cannot be judged solely on the basis of the code's MIT licence.
  • External services such as domains, hosting, databases, payments or AI may incur separate charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Get a Yatmo licence key at [yatmo.com](https://yatmo.com): the **backend** key for the server, the **frontend** key for the map (locked to your domains; add `localhost` while developing).

Original README

MIT licence. Yatmo is a paid service for real estate portals, agency networks and developers; a licence key is required.

Original README

Search by travel time, listings on the map and the other map features: [JavaScript plugin](https://documentation.yatmo.com/plugins/js-map), `<YatmoInteractiveMap>` in [@yatmo/react](https://www.npmjs.com/package/@yatmo/react).

Original README

Scores, listing enrichment, isochrones, routes, geocoding, static map images: [@yatmo/sdk](https://www.npmjs.com/package/@yatmo/sdk) and the [API](https://documentation.yatmo.com/api).

Original README
https://github.com/Yatmo/yatmo-nextjs-starter/blob/main/LICENSEhttps://github.com/Yatmo/yatmo-nextjs-starter/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-03. 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
Directory site · Corporate Website · Starter
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-10-01
Screenshot last checked
2026-10-03

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-04

Inspect the recorded source material

SHA-256: 24442ad9e60e4c00199d0086d49755a126f1d9e2fed207dd1719c79569083690

2026-10-03T16:20:51.744Z

Source file / repository
# Yatmo Next.js starter: real estate listing pages with neighbourhood data

Build a modern property page with Next.js and [Yatmo](https://yatmo.com): the interactive neighbourhood map with
points of interest and travel times, the nearest schools, nurseries, supermarkets and public transport, and a written
neighbourhood text rendered on the server so search engines and AI assistants index it. App Router, React server
components, TypeScript, JSON-LD, cached Yatmo calls. 25 countries, 23 languages.

<p align="center">
  <img src="docs/screenshot.png" width="800" alt="A listing page of the starter: facts, Yatmo neighbourhood map, nearest places and neighbourhood text">
</p>

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/Yatmo/yatmo-nextjs-starter&env=YATMO_BACKEND_KEY,NEXT_PUBLIC_YATMO_FRONTEND_KEY,YATMO_COUNTRY&envDescription=Your%20Yatmo%20keys%20and%20country&envLink=https://documentation.yatmo.com/license)

## Run it in 5 minutes

1. Get a Yatmo licence key at [yatmo.com](https://yatmo.com): the **backend** key for the server, the **frontend**
   key for the map (locked to your domains; add `localhost` while developing). [Keys explained](https://documentation.yatmo.com/license).
2. Use this template (button on GitHub) or clone it, then:

```bash
npm install
cp .env.example .env.local      # fill in the two keys and the country
npm run dev                     # http://localhost:3000
```

Three sample listings are in `lib/listings.ts`; replace them with your API or database.

## What the listing page does

| Part | How | File |
|---|---|---|
| Map, points of interest, travel times, isochrones, routes | `<YatmoMap>` from `@yatmo/react`: one iframe built on the server with the frontend key, no client JavaScript | `app/listings/[id]/page.tsx` |
| Nearest schools, nurseries, shops, public transport with walking times | `<YatmoPois summary={...}>` with data fetched on the server | `app/listings/[id]/page.tsx` |
| Neighbourhood text (education, shopping, transport, roads, leisure, nearby cities) | `<YatmoNeighbourhoodText text={...}>` with data fetched on the server: part of the HTML, indexable | `app/listings/[id]/page.tsx` |
| Yatmo calls | `@yatmo/sdk` with the backend key, cached 30 days with `unstable_cache` | `lib/yatmo.ts` |
| SEO | `generateMetadata` builds the description from the first neighbourhood sentence; JSON-LD `RealEstateListing` | `app/listings/[id]/page.tsx` |
| Discreet listings | `discreet: true` shows a circle instead of the pin, keeps the street out of the titles and the coordinates out of the JSON-LD | `lib/listings.ts` |

Pages are rendered on the first request and revalidated daily; the Yatmo answers are cached for 30 days, since a
neighbourhood rarely changes. Nothing is fetched at build time, so `npm run build` works without keys.

## Going further

- Search by travel time, listings on the map and the other map features: [JavaScript plugin](https://documentation.yatmo.com/plugins/js-map), `<YatmoInteractiveMap>` in [@yatmo/react](https://www.npmjs.com/package/@yatmo/react).
- Scores, listing enrichment, isochrones, routes, geocoding, static map images: [@yatmo/sdk](https://www.npmjs.com/package/@yatmo/sdk) and the [API](https://documentation.yatmo.com/api).
- Other stacks: [Vue and Nuxt](https://www.npmjs.com/package/@yatmo/vue), [web components for any site](https://www.npmjs.com/package/@yatmo/elements), [WordPress](https://wordpress.org/plugins/yatmo-map/), [Odoo](https://apps.odoo.com/apps/modules/20.0/yatmo_map), [mobile SDKs](https://github.com/Yatmo).

MIT licence. Yatmo is a paid service for real estate portals, agency networks and developers; a licence key is required.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.