Mapperoni is a tool for creating user-friendly survey forms, public-engagement questionnaires, and collaborative maps. Collect feedback and geospatial data by inviting people to mark and describe locations directly on an interactive map. Learn more at www.mapperoni.com.
This repository contains the source for the Mapperoni website and documentation site. The Mapperoni application is available at app.mapperoni.com.
A Markdoc-powered documentation site built with Next.js 16 (App Router) and Tailwind CSS 4. The content lives in Markdown (page.md) files under src/app, and a small Markdoc schema adds custom components, syntax highlighting, and a FlexSearch-based doc search.
This repository, including the Mapperoni website and its documentation, is licensed under the MIT License. This license does not apply to the Mapperoni application or service at app.mapperoni.com. Use of that application is subject to separately agreed commercial terms or other written arrangements with Canvis Software LLC.
- Install dependencies:
npm install(npm is recommended; pnpm/yarn also work). - Run the dev server:
npm devthen open http://localhost:3000. - Lint/format:
npm lint(Biome) andnpm format. - Production build:
npm buildthennpm start.
src/app— App Router pages; docs live in nestedpage.mdfiles (frontmatter supplies titles/metadata).src/markdoc— Markdoc schema (nodes.js,tags.js) and client search indexer.src/components— UI building blocks for the docs shell, navigation, and content rendering.scripts/generate-search-data.mjs— Build-time script that parses Markdown and emits.generated/search-data.jsonfor client-side search.public— Static assets such as the favicon and social images.
- Add new docs by creating a
page.mdinsidesrc/app/docs/<slug>/with YAML frontmatter (title, optionalnextjs.metadata). - Custom tags (e.g., callouts, quick links) are defined in
src/markdoc/tags.js; nodes like code blocks/links are configured insrc/markdoc/nodes.js. - Navigation is controlled in
src/lib/navigation.ts.
npm dev and npm build run scripts/generate-search-data.mjs before Next starts to create .generated/search-data.json. If you add or rename pages while the dev server is running, run npm generate:search so search stays in sync.
- Node 18+ (matches Next.js 16 support matrix).
The app is a standard Next.js output. Any platform that supports next start will work. Ensure the build step runs npm build so the search index is generated before serving.