docs
/
Example apps

Start with a working app

Working apps built on AppEngine — a storefront, a sign-in, a till, a door scanner — each one a tutorial you can follow.

Every example is a small app that does one thing properly, with a tutorial that builds it from an empty folder. None of them is a demo of everything — that is what makes them readable.

They all live in one repository. Pick the one closest to what you are building:

Every one of these is a working app, driven against a live AppEngine while its tutorial was written. Each page ends with the exact sequence of requests you should see and a table of the ways it fails.

Which one to read first

Building for the web? Start with the Next.js storefront. It is the shape almost every web app on AppEngine should take: the browser talks to your server, your server talks to AppEngine.

Already using Remix, or want the longer build-along? The Remix storefront covers the same ground step by step from an empty folder, and goes further: it adds a complete reservation flow — availability, guest booking, lookup and cancellation — and shows how loaders and .server.ts remove the need for a proxy entirely.

Building an app? Start with Authentication, whatever you are actually building. Every other Flutter example begins where it ends, and the thing it explains — two tokens, two kinds of people, and a sign-in that has three endings — is what people get wrong first.

What you need before any of them run

An organization and an application credential, both from Studio Manager:

What it is
Organization idYour tenant. Sent as orgid on every request
App id, key, secretIdentifies your application to AppEngine
AppEngine URLhttps://appengine.appmint.io, or your own deployment

Nothing is committed. The web examples read them from .env.local; the Flutter examples take them at build time or ask on screen.

Application credentials are not a security boundary

On the web they belong on your server and must never reach a bundle — the Next.js example exists largely to show how. In a mobile binary they are readable by anyone who unpacks the app, so treat them as a name rather than a password. What protects a request is the signed-in person's token.

Getting the code

git clone https://github.com/JacLight/appmint-examples.git

The Flutter examples use the client package as a sibling checkout, so clone that too:

git clone https://github.com/JacLight/appmint-client.git
your-folder/
  appmint-client/
    appmint_flutter_client/
  appmint-examples/
    appmint_flutter_authentication_demo/
cd appmint-examples/appmint_flutter_authentication_demo
flutter pub get
flutter run -d chrome

Prefer not to keep the client checked out? Swap the path: dependency in the example's pubspec.yaml for the git: form — see the Flutter client.