Publish from your repository
A Maypop app is a static site: HTML, CSS, JavaScript and assets that run in the browser. If your project builds to static files, it can be a Maypop app. See What a Maypop app is for what that rules out.
The whole flow
Section titled “The whole flow”maypop auth # once per machinecd my-appmaypop init # creates the app and connects this foldergit add .git commit -m "Create my app"maypop publish # builds and publishes version 1Connect a folder: maypop init
Section titled “Connect a folder: maypop init”maypop init# or set everything up frontmaypop init ./my-app --name "Plant swap" --description "Trade cuttings with your neighbours" --visibility privateinit:
- Creates a Git repository if the folder is not one yet.
- Creates a new, unpublished app on Maypop. The name defaults to the folder
name; visibility defaults to
private. - Adds Maypop’s Git server as the
originremote, signed in through the CLI’s credential, and records the app in the repository’s local Git config. - Writes
maypop.tomland detects your framework.
init stops if the folder already belongs to a Maypop app or already has an
origin. To keep a GitHub remote, rename it first:
git remote rename origin githubmaypop initInitialising does not publish anything.
Supported frameworks
Section titled “Supported frameworks”| Framework | Build | Output | Routing |
|---|---|---|---|
| Vite | your package manager’s build |
dist/ |
single-page app |
| Rsbuild | your package manager’s build |
dist/ |
single-page app |
| Next.js (static export) | your package manager’s build |
out/ |
one file per route |
| Plain static files | none | repository root | single-page app |
Next.js must set output: "export". Server features — route handlers, server
actions, middleware, and server rendering — do not run on Maypop. Use the
SDK for data, files and AI instead.
The package manager comes from packageManager in package.json, then your
lockfile, then npm. To override the build command, output folder, or entry
file, see maypop.toml.
Publish a version: maypop publish
Section titled “Publish a version: maypop publish”maypop publishmaypop publish --changelog "Add shared collections"Publishing works from the exact commit at HEAD:
- Checks the folder is connected to the right app.
- Refuses uncommitted changes — commit or stash first.
- Runs your build, and refuses a build that changes tracked files.
- Pushes
HEADto the app’smainbranch on Maypop. - Uploads and checks the static output.
- Records it as the app’s next version.
Each version is immutable. Publishing again makes a new one.
Update the listing
Section titled “Update the listing”Name, description, category, thumbnail, and who can reach the app live in
the [app] table of maypop.toml. They are sent only when you ask:
maypop app applymaypop publish never changes them. See Configuration
for each field, and Share an app for what reach means.
Test the SDK before you publish
Section titled “Test the SDK before you publish”The SDK ships a local Maypop host for Vite, Rsbuild and Next.js, so maypop
calls work in your normal dev server without publishing. See
Develop locally.