Describe an app.
Watch it build.
Every app comes with its database, sign-in, file storage, models and actions already hosted. Nothing to connect first, no keys to paste. The code is yours to open, edit and deploy.
Every app ships with Next.js pages, actions that run, a database, sign-in, file storage, every model, its own address.
An app is one folder: models, actions and Next.js pages. Everything under it is already running when the first build finishes, on the same balance as your models.
Data. Actions. Pages. Shopify. Deploy.
The assistant writes ordinary files you can read. Open any of them in the console, or pull the folder and keep going in your own editor.
Models are your tables.
Each model is a typed schema file. Records live in a database that comes with the app, and you can browse and edit them in the console.
- Fields, relations, enums and files in one schema file per model.
- Sign-in and users come with it; records can belong to whoever made them.
- Each environment keeps its own records, so testing never touches production’s.
fields: {
number: { type: "string", validations: { required: true } },
customer: { type: "belongsTo", parent: { model: "customer" } },
total: { type: "number" },
status: { type: "enum", options: ["draft", "sent", "accepted"] },
pdf: { type: "file" },
}Actions are the backend.
TypeScript functions that run on our servers when a page, a schedule or a webhook calls them.
- Read and write records through the same api your pages use.
- Call any model from an action; it bills to the same balance.
- Logs, timings and cost for every run.
export const run: ActionRun = async ({ params, record, api, logger }) => { applyParams(params, record); const items = await api.lineItem.findMany({ filter: { quote: { equals: record.id } }, }); record.total = items.reduce((sum, i) => sum + i.price * i.quantity, 0); record.status = "sent"; await save(record); logger.info("Quote sent", { id: record.id, total: record.total }); };
Pages are Next.js.
Real Next.js pages, served on the app’s own address. Preview them at desktop or phone width with the code beside them.
- Signed-in and public routes, side by side.
- Edit in the console with TypeScript hints, or in your own editor.
- Every save shows up in the preview.
Shopify apps, same folder.
Pick Shopify app and the assistant adds install, sync and a theme app extension to the same folder.
- Shop installs, scopes and uninstalls handled as model actions.
- Theme blocks written as a theme app extension.
- Test on a development store with a tunnel the CLI keeps open.
Push, and it’s live.
Development and production are separate environments, each with its own records, secrets and address.
- Deploy from the console, or by pushing to your Git repository.
- Serve production at the app’s address or your own domain.
- Roll back to any earlier deployment.
Things you won’t have to do before your first page loads.
Email is the one thing you bring: the assistant writes the action, and you add your own Resend key.
A receipt for every call your apps make.
Builds, actions, reviews and model calls draw on one prepaid balance, inside your team’s Directives and budgets. Every line shows what it ran on and what it cost.
Pick a prompt. Change what you like.
Each one fills the box at the top. Edit it before you build, or after: the code is yours either way.
Live by tonight.
Describe it, watch it build, and send the address to someone. New accounts get $5 of credit once they verify their email, no card.