User guide · a screenshot at every step

Full user guide

From a one-paragraph idea to a working app: what you do at each step, what the system does for you, and where AI helps.

  • You what you decide or press
  • AI helps steps that call AI
  • No AI the system does it all itself

Start here: get to know AppForge before you sign up

You can look around without signing up, and nothing in this part calls AI.

  1. Home page

    YouNo AI
    The AppForge home page
    What you do
    • Read what AppForge does, then press “Start building free” or “See how it works”.
    What the system does
    • Shows the overview: idea → several AI designers at once → build the app.
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: The top menu leads to Showcase · Integrations (kits) · Guide · ROI · Try it first · Partners.

  2. Try it first, without signing up

    YouNo AI
    Look at the showcase before you sign up
    What you do
    • Type an idea to see an example, or pick a finished design to look at.
    What the system does
    • Opens a prepared example. It does not create a new project.
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: Good for showing customers the result before they decide to sign up.

  3. Showcase

    YouNo AI
    The Showcase page on the live system: 14 real apps their owners chose to show
    What you do
    • Look at real apps built with AppForge that their owners chose to show.
    • Press “Open the live app” or Remix to copy the design into a project of your own.
    What the system does
    • Remix copies the design into a new project right away.
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: Remix does not call AI, so copying costs no credits.

  4. Integrations (the kit library)

    YouNo AI
    The kit library, with more than 80 ready-to-use capabilities, searchable and filterable by category
    What you do
    • Search and browse ready-made capabilities you can add to an app, such as payments, maps, chat and notifications.
    What the system does
    • More than 80 kits are ready to use, and 3 more come with every app (admin · login · multi-language).
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: A kit is tested code. Add it and you get the screens and API at once, without asking AI to write them again.

  5. Sign up / sign in

    YouNo AI
    Sign up with email, or sign in with a passkey
    What you do
    • Sign up with email, or sign in with Google · LINE · GitHub · passkey (Face ID / Touch ID).
    What the system does
    • A new account gets starting credits to try things out.
    Where AI helps

    This step does not call AI. The system does it all itself.

Build an app, step by step

The main path from idea to app. Along the way the system stops at a “gate” so you can check and approve. The screenshots in this part come from the demo project “Kind Clinic”, filled with every state.

  1. Your project dashboard

    YouNo AI
    All projects, and the “Waiting for you” box
    What you do
    • See all your projects, open one, or press “New project”.
    • The “Waiting for you” box lists the projects that need your decision.
    What the system does
    • Each card shows its status, with buttons to edit and publish to the Showcase.
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: “Add an existing app” registers an app that was not built with AppForge.

  2. 1. Tell your idea

    YouAI helpsA few seconds
    The idea box, examples under it, and settings: style · detail · build budget
    What you do
    • Type one paragraph about your idea, or press an example under the box.
    • Start from a template · attach an existing document (such as a BRS) · or start from a website you like.
    • Settings: website style (10 styles) · approval detail · build budget.
    What the system does
    • Reads the document or website you attached (no AI).
    • Creates the project and starts the workflow.
    Where AI helps

    Optional: “Plan First” lets AI briefly interview you before the idea goes to the design rooms (there is a fallback if AI does not answer).

    Tip: Quick approval = stops for you to check at 3 points: after requirements · after design · after QA. Deep = stops at every step. The “scaffold only” budget = AppForge designs and lays out the skeleton, and you write the rest with your own AI.

  3. The project's workflow page

    YouNo AI
    The workflow page: the 5-step bar on top, the project menu, and the QA summary
    What you do
    • See which step you are on (design → review → build → polish → publish).
    • The project menu: Changes · Studio · API spec · Usage · Images · ROI · Share.
    What the system does
    • Project QA summary: estimated and actual time, finished steps, files produced, readiness to go live, and what to do next.
    Where AI helps

    This step does not call AI. The system does it all itself.

  4. 2. Requirements

    YouAI helpsAbout 1 minute
    The “Waiting for your approval” box and the requirement brief AI expanded
    What you do
    • Read the user groups and the feature list you got.
    • Ask for a redo with a changed prompt, or cut scope you do not want, then press “Approve and continue”.
    What the system does
    • Stops and waits for you before design begins (in both Quick and Deep).
    Where AI helps

    AI expands the idea into a requirements document (the main model for this job: Claude Opus 5.5).

    Tip: Designing costs no credits. The system charges credits when you press “Approve & start build” at the gate before building (step 4), at the price you see in the quote.

  5. 3. Design with 6 AI rooms at once

    YouAI helpsAbout 3–4 minutes
    The design rooms: 6 rooms work at once, then merge into one design (shown at the start, every room queued)
    Progress in the workflow: requirements done, design in progress
    What you do
    • Watch each room's progress live.
    • If a room fails, redo only the failed room.
    What the system does
    • Sends one brief to 6 rooms: Claude · ChatGPT · Gemini · Grok · Perplexity · Qwen (a backup model steps in if a room fails).
    • Merges all the results into one design document.
    Where AI helps

    This whole step is AI's work: each room thinks from a different angle (screens and usage · architecture · database · API · mobile · security), then another AI merges them.

    Tip: A real example: MindDNA got 8 screens, 9 tables and 8 APIs, with the risks to watch for, before a single line of code was written.

  6. 4. The gate before building: check the design

    YouNo AI
    The gate before building: choose a budget level, then press “Approve & start build”
    ClinicAi design summary: 14 screens, 23 tables, 23 APIs and time saved
    What you do
    • Read the design summary: screens, tables, APIs, time saved compared with a human team, executive summary, tech stack, plan, risks.
    • Pick a budget level (scaffold · economy · balanced · premium), then press “Approve & start build”. This is when the system charges credits.
    What the system does
    • Tabs Prompt/Brief · Agent Council · Model Compare · Style Tokens let you look back at where things came from.
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: Before you press build, we suggest opening the “API spec” menu and making the form first (step 5). The more the compiler can write, the less AI has to write, and the lower the price.

  7. Readiness before building, and style

    YouAI helps
    The readiness score before building, and what to fix first
    Style proposals from AI, and brand templates
    What you do
    • See the readiness score (clarity of requirements · screens · data/API · security · design · evidence from the design rooms) and what should be fixed.
    • Pick a screen style from the proposals, or from a brand template (73 styles).
    What the system does
    • Checks readiness from the design (no AI).
    Where AI helps

    The 3 style proposals come from the design AI already made (no extra AI call).

  8. Brand images, and ask 2 models before deciding

    YouAI helps
    Brand images, and Model Duel: ask 2 models before deciding
    What you do
    • Upload a logo and a home-page image, or press “Create with AI”.
    • Model Duel: pick 2 models and ask both the same question to compare answers before you decide.
    Where AI helps

    AI creates the images (OpenAI) · Model Duel calls 2 models. Both are optional.

  9. Platform, app shell and kits

    YouNo AI
    Choose the platform and the App Shell
    The kit market by category
    What you do
    • Pick the platform (web · mobile · both) and the app shell (5 kinds of App Shell).
    • Add more kits from the kit market, by category.
    What the system does
    • Recommends kits from words in the design (no AI) · the first 2 kits are included in the base price.
    Where AI helps

    This step does not call AI. The system does it all itself.

  10. Estimate the AI cost, then press build

    YouNo AI
    Estimate the AI cost before you press build
    What you do
    • See the estimated AI cost, then press “Approve & start build”.
    What the system does
    • Build price = base price + kit price + AI cost for the part that cannot be compiled.
    • The system charges credits when you press this button, at the same price you see. If you do not have enough credits, it takes you to top up first.
    Where AI helps

    This step does not call AI. The system does it all itself.

  11. 5. The API spec form (the heart of 6GL)

    YouAI helpsUnder half a minute
    A draft API spec form: how many items can be compiled, and what you need to decide
    What you do
    • Press “Generate the form”, then read the summary of how many endpoints and screens can be compiled.
    • Answer only what the system asks in the “You need to decide” box.
    What the system does
    • The system arranges things itself first, then asks AI to help only where it is unsure.
    • Checks completeness before you can approve (no AI).
    Where AI helps

    AI classifies once (a low-cost model, with no random variation in its answers).

    Tip: This form is the “blueprint” a person approves, and then the compiler reads it. What can be compiled does not need AI to write it.

  12. Tables (Entity) and permissions

    YouNo AI
    Permissions for each table: view · create · edit · delete, and who sees the data
    What you do
    • Choose what each table can do (view · create · edit · delete) and who sees the data: owner · role · public.
    What the system does
    • Enforces the permissions for real in the app that is built.
    Where AI helps

    This step does not call AI. The system does it all itself.

  13. Endpoints: who does each API

    YouNo AI
    Each endpoint and the kind it was given (CRUD · Query · custom …)
    What you do
    • See which kind each API is, and change it if it is wrong.
    What the system does
    • The kinds the compiler can write itself: crud · query · aggregate · summary · document.
    • kit = a kit does it · platform = already comes with the app · custom = AI's job at build time.
    Where AI helps

    This step does not call AI. The system does it all itself.

  14. Screens: screen recipes, and kits that can do them instead

    YouAI helps
    Each screen, the recipe it uses, and the kit that can do it instead
    What you do
    • See which recipe each screen uses, or whether a kit does it instead, and change it.
    What the system does
    • There are 50 screen recipes, such as table, form, calendar, report, dashboard.
    Where AI helps

    The “Words on screen” button writes the Thai and Chinese words for every page (1 AI call).

  15. Landing page, scheduled jobs and notifications

    YouNo AI
    Landing page templates, and scheduled jobs with notifications
    What you do
    • Choose a landing page template (or let AI choose when building).
    • Set scheduled jobs (Thai time), such as a daily morning summary, and press “Add a notification” for when a number reaches a threshold.
    • Press “Save”, then “Approve”.
    What the system does
    • Scheduled jobs use the Scheduler kit · notify by email, LINE or webhook.
    Where AI helps

    This step does not call AI. The system does it all itself.

  16. 6. Approve the form → the “Ready to build” card

    YouNo AIOne click
    The approved form
    The “Ready to build” card: 4 price levels, and the guide to the remaining work
    What you do
    • See the 4 prices on the card (scaffold · economy · balanced · premium), then go back and press approve at the gate before building.
    • Download the guide to the remaining work (.md), for the scaffold budget where you write the rest yourself.
    What the system does
    • The next build compiles from this form. What cannot be compiled is AI's job.
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: The remaining AI cost is charged by the number of items AI still has to write, and never exceeds the price without a form. The real price is on this card.

  17. 7. Build the app: backend → frontend → UX/UI → QA → deploy

    YouAI helpsAbout 15 minutes
    Progress while building
    What you do
    • Watch the progress of each step · in Quick mode it stops for another approval after QA.
    What the system does
    • The compiler writes everything in the form without AI: tables, APIs, screens, dashboards, CSV/Excel export, Thai documents, scheduled jobs.
    • The deploy step: lays out the app, logo, landing page, README, and pushes to GitHub (if set up).
    Where AI helps

    AI writes only the items that cannot be compiled (developer · UX · QA, depending on the chosen budget) · writes the landing-page text and chooses the template · writes the README.

    Tip: The scaffold budget skips AI entirely (the compiler still works) · the landing page does not make up reviews, so the app owner can add real ones.

  18. 8. Build finished

    YouNo AI
    Build finished: time, number of screens, endpoints, tables, and credits used
    Publish button, push to GitHub, and download the code
    What you do
    • Press “Publish & get a live link” · push to GitHub again · download the skeleton .zip.
    What the system does
    • Shows the time taken, the number of screens, endpoints and tables, and the credits used.
    • Keeps the result of every step so you can look back.
    Where AI helps

    This step does not call AI. The system does it all itself.

  19. 9. Preview, publish and go live

    YouNo AIPreview about 2–3 minutes
    The live preview page: start preview, publish, mobile preview, deploy
    Publishing an app on the live system
    What you do
    • Press “Start preview” and try the real app · view it on a phone with the QR code.
    • Press “Publish” · add it to the Showcase (choose the audience: everyone, or an email list).
    What the system does
    • Runs the app on the preview machine so you can try it.
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: The right-hand image is from a real publish on the live system.

  20. Go live: domain, login and Jarvis

    YouNo AI
    Go live · your domain · DNAfinity ID · Jarvis
    What you do
    • Download the deploy kit (.zip) or use managed deploy · add your own domain.
    • Turn on “Sign in with DNAfinity ID” for the app · create a Jarvis key (paid with AppForge credits).
    What the system does
    • Keeps version history so you can roll back.
    Where AI helps

    This step does not call AI. The system does it all itself.

  21. Polish with AI, and Gap Analysis

    YouAI helps
    Polish with AI, and Gap Analysis
    What you do
    • Type what you want changed, for example “make the hero bigger” · press “Run Gap Analysis” to find gaps before launch.
    What the system does
    • Has undo, and lets you click to pick the spot to change.
    Where AI helps

    AI Polish: AI changes things as you ask (credits are charged first) · Gap Analysis: AI finds gaps in the app.

  22. 10. Studio: edit on the real screen

    YouNo AIInstant
    Studio on the live system: a live preview of the real app
    Click to pick a button on the app page — a direct edit costs 0 credits
    What you do
    • Press “Pick”, then click what you want to change on the live app page.
    • Change a colour, text, image, or move a field, and see the result at once.
    What the system does
    • A direct edit uses no AI and costs no credits (the “Direct edit · 0 credits” label).
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: The images are from Studio on the live system (the ClinicAi app).

  23. Change the colours of the whole app with design tokens

    YouNo AI
    Change colours with design tokens
    What you do
    • Pick a colour from the tokens (primary · accent · background, etc.) and press apply.
    What the system does
    • Changes the CSS variable once, so the whole app changes together.
    Where AI helps

    This step does not call AI. The system does it all itself.

  24. Ask in words, add a page, and history

    YouAI helps
    Studio: the box where you describe a screen change in words
    Add a new page from a template
    Edit history, and the Dev / SIT / UAT environments
    What you do
    • Describe the screen change → see the price first → confirm → see the plan → check → apply.
    • Add a new page from a template (no AI) · see history and undo · Dev / SIT / UAT environments.
    What the system does
    • Builds a preview that can be compiled again (no AI).
    Where AI helps

    Commands in words: AI makes a plan once, from a list of recipes the system picked out, and you check it before applying.

    Tip: You see the price first every time, and you can always undo the latest edit.

  25. 11. Ask for changes later (Change Council)

    YouAI helps
    Change Council: the current spec, a new request, and the verdict
    What you do
    • Type what you want to add or change, and read the verdict.
    • Press apply → you get a new version of the requirement spec → let AI carry it out.
    What the system does
    • Keeps the spec as versions, and you can open the full document.
    Where AI helps

    AI phrases the request once → 6 AI advisor seats each weigh in from a different angle and summarise the decision → AI writes code to the approved spec.

Reforge: bring an existing app to AppForge

Already have an app? Send its code or its running website. AppForge reads it, understands it and builds a new app that the old clients can still call as before, with tools to prove the new app behaves like the old one.

  1. What Reforge is

    YouAI helps
    The Reforge page: turn legacy code into a modern app
    What you do
    • Open “Reforge” from the account menu (top right) or search for it with ⌘K when you already have an app and want a new one on the AppForge standard, without describing the idea from scratch.
    • At the end you choose one of two paths: AppForge builds the whole new app for you, or you take a repo and port it yourself in your IDE (Reforge DIY).
    What the system does
    • Three stages: ingest → understand → map to AppForge, and it stops for your review before each next stage.
    Where AI helps

    AI reads the code and maps it · masking secrets, reading the old API's shape and comparing old with new use no AI

    Tip: The menu shows when an admin has turned Reforge on · the new app answers the API in the old shape, so old clients such as a mobile app keep working unchanged (see the “Legacy API contract” table at the end of this part).

  2. Send in the old code

    YouNo AIA few seconds
    Choose the code source, confirm your rights, then start reforging
    What you do
    • Choose the source: upload code (.zip) up to 30 MB · a GitHub repo · or a running website.
    • Tick the box confirming you own the code or are authorized, then press “Start reforging”.
    What the system does
    • Without the confirmation nothing starts, and every confirmation is recorded.
    • Running website: first prove the site is yours (serve the text at the address given, or add a DNS TXT record). After that it is only read: pages of the same site, robots.txt honoured, forms read but never submitted, nothing logged into.
    Where AI helps

    This step does not call AI. The system does it all itself.

  3. Ingest and understand

    YouAI helpsA few minutes
    Three stages: ingest · understand · map, with what was ingested and the recovered spec
    What you do
    • Check “What we ingested”: files and lines, languages, package manager, framework and the sign-in method, then press “Looks right — understand it”.
    • Check “Recovered spec”: the number of tables, endpoints and screens, then press “Looks right — map to AppForge”.
    What the system does
    • Every secret is masked before any AI call or disk write · .env files and key files (.pem .key .p12 .jks) are dropped whole.
    • Files over 512 KB are skipped and at most 6,000 files are read · it says plainly how many files the AI read out of the total, and which ones only in part.
    Where AI helps

    Ingest uses no AI · Understand: 6 AI labs each read one side at the same time (database · API · screens · business rules · sign-in and permissions · outside services), then one spec is merged from them

    Tip: If you see a warning that the stack was only partly detected, review the recovered spec more carefully before going on.

  4. The migration plan, then build the new app

    YouAI helps
    The migration plan: what each old piece becomes in the new app
    What you do
    • Read the “Migration plan”: what each old piece (tables, routes, sign-in, validation and so on) becomes in the new app.
    • Press “Build this app” → the normal build page (build gate, price, API Spec form), or choose Reforge DIY at the next step.
    What the system does
    • The old API's shape is read from the app's own files (tests, route files, response helpers); every item found cites its file and line · not found = not translated, never guessed.
    • The built app gets a legacy API layer: an old client calls the old path and gets the answer in the old shape, while the new app's own API stays complete.
    Where AI helps

    AI writes the migration plan and the new app's design · reading the old API's shape uses no AI · building works like any other build

    Tip: Each user's data stays theirs: the new app always sets a row's owner from the signed-in user (a client cannot send it) and another user gets 404.

  5. Prove they match — old vs new

    YouAI helps
    Prove they match: capture answers from the running old app
    What you do
    • Enter the URL of the old app that is still running and press “Build plan + capture from old app” to keep its real answers as the baseline cases.
    • Point at the new app's preview and run the comparison · you can load the old data into the preview with a JSON export of the old database.
    • You can also run the old app's own tests (only pytest and supertest suites that call the app over HTTP can be replayed).
    What the system does
    • Each answer is compared field by field, and the evidence tier T0–T3 says what was actually checked (see the table at the end of this part).
    • Old tests that can't be replayed faithfully are left out with the reason, for example they send a value masked at ingest or need data the old test database had.
    Where AI helps

    The comparison uses no AI · when a case fails, AI suggests the fix but does not apply it; you apply it on the build page or in your own workflow

    Tip: You can set “Publish rule for this app”: the minimum tier required · a single failing case blocks publishing.

  6. HAR files, run history and data migration

    YouAI helps
    Upload a HAR · run history · generate the data-migration script
    What you do
    • No old app running? Open DevTools → Network, tick “Disable cache”, use the old app, then export a HAR with content (up to 25 MB) and upload it.
    • To check that one user can't read another's data, upload one HAR per user.
    • Press “Generate migration script” to get a script that moves the data from the old database into the new tables, then run it yourself against your databases.
    What the system does
    • Reads (GET 200 with JSON) become cases · from the first write on, the requests form one replay sequence, sent only to this project's preview · the file is read once and discarded, no cookie or header is kept.
    • Every run is kept as it was; a later run can't change an earlier result.
    • The migration script runs in one transaction, counts rows before and after, and stops if a table loses rows · a script with a destructive statement can't be downloaded · AppForge never touches your databases.
    Where AI helps

    Migration script: AI writes the column mapping and the script, then the system checks its safety before it can be downloaded · reading a HAR uses no AI

    Tip: A password used to sign in during a comparison is used for that run only and is never stored.

  7. Reforge DIY: take the repo and port it yourself

    YouAI helps
    Reforge DIY: one repo, four parts inside
    What you do
    • Name the repo, choose private, choose whether to include the old code, then start packaging.
    • Clone the repo and open it in Claude Code or any IDE agent, and port one feature at a time following the guide.
    What the system does
    • One repo with 4 parts: legacy/ (the old code, secrets masked) · app/ (an AppForge app that boots right away with the mapped kits) · docs/reforge/ (the spec, the migration map, the guide and the attestation record) · tools/reforge/ (a parity checker that runs on your machine).
    • You can change your mind later: press “Build with the platform instead”.
    Where AI helps

    The porting guide has a prompt per feature, in the order to do them, ready to paste into your AI · the porting runs on your own subscription

    Tip: A one-time fee per project; you always see the price before paying · data is not migrated automatically, and parity covers only the cases you record.

  8. Connect rea: rea takes the old app apart, and its evidence goes into Reforge

    YouAI helps
    What you do
    • Use it when there is no source, or the source doesn't tell the whole story: a running website, minified or bundled JS, an Electron, .NET or APK app with no source, or behaviour you only see while the old app runs.
    • Follow the table “Connect rea, step by step” at the end of this part: install rea and connect the AppForge MCP in the same AI client, then ask in a sentence for the old app to be taken apart and sent to the project as a “Legacy Evidence Pack”.
    • Come back to the Reforge page, check the “Evidence from rea” card, answer every question in the “What rea could not tell” card (“Unknown — leave it out” is always allowed), then approve to turn it into a design.
    What the system does
    • Checks the pack without AI: all 6 sections (data, API, screens, logic, auth, external services) must match their shapes, stay under the caps and hold no secrets, and every ev_… evidence id cited must exist in the attached evidence bundle · an item that cites no evidence is marked “no evidence yet”
    • Skips AppForge's 6 AI labs and goes straight to “understood” · a website must prove ownership first (the .well-known file or a DNS TXT record), as with a normal website source
    • AppForge never runs rea on its servers: rea is an MCP server that runs on your machine with your AI client
    • If the project already has its code (uploaded or from GitHub), a pack sent with mode “merge” is merged with AppForge's lab results instead of replacing them: items rea observed or derived win, items rea only inferred lose to the code, and conflicts between the two are shown to you before you approve
    Where AI helps

    Taking the old app apart uses your AI client and subscription, not AppForge credits · AppForge uses AI once, to turn the evidence into a design after you approve

    Tip: rea (github.com/morluto/rea) is a third-party open-source project (MIT), not part of AppForge · if you already have a Reforge DIY repo, you can use rea inside it as docs/reforge/REFORGE_GUIDE.md §1a describes · the architecture, the benefits and a screenshot of every step are in the guide book “Reforge × rea” (/guide/reforge-rea).

Connect rea, step by step

StepWhat to doWhat you get
1 · Prepare a machineUse your own machine, not a server that runs production · install Node.js 22.19 or later (or 24.11+ / 26+) and an AI client that supports MCP, such as Claude CodeA machine ready to run rea
2 · Install reaRun npx [email protected] setup, choose your AI client, review the plan setup will write, approve it, then restart the clientYour AI client sees rea's tools as an MCP server
3 · Connect the AppForge MCPOpen Settings → Agent tokens, pick the Reforge project, and run the claude mcp add command it gives on the same machineThe same AI client sees both rea's tools and AppForge's: reforge_pack_schema · reforge_pack_validate · reforge_pack_submit
4 · Ask your AI in a sentenceFor example: “Use rea to take apart https://crm.example.com, which I own, with read-only tools, then send it as an evidence pack to this AppForge project. Cite evidence for every item, and don't guess anything rea says it doesn't know.”The AI reads reforge_pack_schema, gathers the results into 6 sections, checks them with reforge_pack_validate until they pass, then sends them with reforge_pack_submit along with the evidence bundle (export_evidence_bundle) and a HAR if there is one
5 · Tools used most when migratinginspect_analysis_view (the api-surface view): endpoints grouped from a HAR → the API section · analyze_javascript_application: modules, imports, routes and IPC of a JS/Electron app · inspect_web_network_capture: every request and response in a HAR file · inspect_managed_artifact / inspect_managed_members: .NET assemblies with no source · list_unknowns: what rea cannot tell yetYou know how the old app really behaves before you write the new one
6 · Check and approve in AppForgeOpen the project's Reforge page: the “Evidence from rea” card shows the rea release, the number of items, how sure each is (observed · derived · inferred), the items with no evidence and what rea could not tell · check, then approveThe new app's design, then the API form you approve before the build, as in a normal Reforge
7 · Use the same HAR on both sidesRecord a HAR from the old app, let rea explain its endpoints, then send the same file with the pack or upload it under “Prove they match” in AppForgerea says what the old app does · AppForge checks whether the new app answers the same · AppForge's HAR reader follows rea's rules: HAR 1.1/1.2, and a file with a duplicate key is refused
8 · RulesOnly for software you own or are allowed to change (you confirm it when you send the pack, matching rea's DISCLAIMER) · a website must prove ownership · use read-only tools: rea itself classes 31 tools as changing things, such as installing an app over ADB or running a Frida script · what rea says it doesn't know is not migrated, and must not be guessedA migration where every item can be checked

This guide follows rea release 6.7.0 (checked on 18 Oct 2026) · rea ships often and each minor release breaks something from the one before; with another release the commands or tool names may differ from this table · AppForge's pack does not depend on rea's file formats

Legacy API contract: what an old client still gets

What the old client expectsWhat the new app does
The old paths, such as /api/todosAnswers on the old paths · the new app's own API (/api/v1/...) stays complete
A body envelope such as {success, data, message}, or noneWraps or doesn't wrap, as the old app did
An error format such as errors[] or {error: "…"}Answers errors in the old format
Status codes per route, e.g. DELETE answers 200 or 204 · bad input answers 400Answers the same codes as the old app
PUT for edits, and actions such as /toggleAccepts PUT and performs the actions as before
True/false as 0 and 1Answers 0 and 1
Column defaults, including an empty stringUses the old defaults, and accepts an empty value when the default is empty
Lists as {items, total}Wraps lists as before · does not yet send total when the list fills a page, and does not yet translate ?page= / ?tag=
Register, log in and “me” on the old paths, by email or username · the token where the old answer had itWorks as before · old users migrated with bcrypt passwords sign in the first time and their account is linked automatically · passwords never go out in an answer
Each user's data stays theirsThe row's owner comes from the signed-in user · another user gets 404
Many-to-many name lists, such as a note's tagsNot supported yet: answers 400 with a clear error, never silently drops the data

Every item comes from the old app's own files, citing the file and line · an item that isn't detected is not translated (the AppForge standard answer is used).

Evidence tiers of the parity proof

TierWhat was checkedWhat it needs in addition
T0Reads (GET) replayed against the new app, without the old data loaded — not yet a proofThe old app's URL, or a HAR file
T1As T0, with the old data loaded into the preview firstA JSON export of the old database
T2T1 + writes (add, edit, delete) replayed and read back matchingA HAR that contains writes
T3T2 + every case measured for values that change by themselves (such as times) + the old app's own tests all passThe old app's tests that can be replayed
InsufficientToo few cases were decided to claim any tierCapture more cases
Differences foundA case failed, or one user saw another user's data — always shown, never hidden behind “insufficient”Fix the new app and run again

A tier states only what was actually checked, never a label someone set · the default publish rule: minimum tier T0 and no failing case.

API Spec: everything the form supports

Reference tables for the API Spec form: endpoint and screen kinds, every screen recipe, scheduled jobs, alerts, sync, kits, the approval checks and the 4 prices. Every row comes from what the system really does.

The 8 endpoint kinds

KindWhat it isWhat the compiler generatesWho writes the code
crudAdd, view, edit or delete the rows of ONE table (list, read, create, update, delete). The form knows it by itself when the path names exactly one table, such as GET /patients.The table's routes, only for the operations you approved (see per-table access). A path ending in an action such as /approve or /calculate is not crud: it would add a row instead of doing the action.No AI when the path names one table · otherwise AI helps fill it · the compiler always writes the code
queryA GET that returns rows of ONE table, filtered or sorted by that table's own fields; it can pick just the first row (latest) and cap the count (at most 200). Filters: eq ne gt gte lt lte in contains is_null. Relative times follow Thai time: today tomorrow week_start month_start year_start days_ago_N.A GET route with the search / date-range parameters the form defines, checked by the compiler's own validator, not a second rule set.AI helps fills the form · the compiler writes the code
aggregateSummary numbers over ONE table: count sum avg min max, optionally per group (day, week or month for a date field), with filters, sort and limit. sum and avg need a number field.A GET route that returns the summary as rows or groups; a dashboard or report screen can bind to it.AI helps fills the form · the compiler writes the code
summaryNumbers over several tables in one request, such as a dashboard's or overview's figures. Each item is an aggregate of ONE table with its own name, at most one group, and a group can be labelled with the related row's name (appointments per branch, labelled by branch name).One route that returns every figure; overview and dashboard screens can bind to it. A report that lists rows of several tables is not a summary.AI helps fills the form · the compiler writes the code
documentONE row printed as a formal document: invoice, receipt, quotation, certificate. The path has one parameter, the row's id. The form sets: number prefix (1-6 of A-Z 0-9), the issue-date field, the party field, line items (a has_many relation: description, quantity, price), total, VAT, WHT and body text. A certificate has no line items, total or tax.A route and a printable document page, from the values the form sets.AI helps fills the form · the compiler writes the code
kitA packaged capability a kit provides. Today 7 kits can stand in for an endpoint, listed in the kit table below (AI chat, Jarvis, AR, motion, charts, file import, documents).When the kit that serves this endpoint is in the build, the app uses the kit's route and it is not remaining work. When that kit is not in the build, or no kit can stand in yet (payments or messaging, for example), the endpoint is still remaining work.No AI when the kit is in the build
platformSign-in, sign-up, tokens, the user's own account, and the PDPA pack.app-base already ships these in every app, so they are never remaining work.No AI — in every app already
customAnything else, or anything the form is not sure of, including endpoints ending in an action (approve, cancel, calculate …) and entries the compiler refused. Each entry's reason is shown on the form; nothing is dropped silently.The compiler does not build it; it is remaining work on the Ready to build card.AI helps in the build (per the quote), or you write it from the guide

AI never writes code in this form. It only fills the form in one call, a person reviews and approves it, and the compiler writes the code from the approved form.

The 4 screen kinds

KindWhat it isIs it remaining work?Who writes the page
compiledA page that shows ONE table, in one of the 4 basic patterns (data-list, detail, form, master-detail) or a registered screen recipe (the recipe tables below) with the options that recipe accepts.No, unless screen compile is switched off for that build or the form as a whole does not compile.No AI — the compiler writes it
kitA page a kit ships: /chat, /jarvis, /ar and /motion. A person maps the screen on the form; the AI does not pick it. If the kit has nothing to read (Jarvis needs a compiled read route), the mapping is refused.Not remaining when that kit is in the build; remaining when it is not.No AI when the kit is in the build
platformA page app-base already ships in every app (such as /settings), and the public landing page at “/” (you can choose its template; see the landing templates). A “/” that is the app's own content, such as a signed-in dashboard, is not platform.No.No AI — in every app already
customEvery other page, such as a page that combines several tables or one that no recipe fits. The reason is shown on the form.Remaining work.AI helps in the build (per the quote), or you write it

A · Records and lists

Recipe idNameWhat the screen doesMain options (* = required)
data-listListA table of the rows of one table—
card-galleryCard galleryRows as cards with a picture and a heading (the picture must be an http(s) link or a data:image); search shows when the screen's query has a search parameterheading*, image, subtitle, columns, show_search
detailRecord detailThe details of one row, opened by its id—
master-detailList with detailThe rows on one side, the chosen row's details beside them—
treeHierarchy treeNested data as a hierarchy you can expand and collapse, such as categories and sub-categories (view only)label*, parent*
compareCompare / reconcileCompare two sides of one data set split by a yes/no field to reconcile, such as our ledger against the bank'smatch_key*, side_field*, resolved_field*, amount_field

Many recipes read at most the first 2,000 rows (10 pages of 200, in ID order, not newest first); when they reach the cap, the screen says it stopped.

B · Forms

Recipe idNameWhat the screen doesMain options (* = required)
formFormA form that adds a new row or edits an existing one—
section-formSection formA long form split into sections, with an optional sticky summary; drafts are kept in this browser onlylayout, sections, sticky_summary
wizardWizardFill in short steps in order; drafts are kept in this browser onlyfields_per_step
transaction-formTransaction formA trade document with line items and a total worked out from quantity × price (no tax, discount or currency yet)quantity_field*, price_field*
bulk-gridBulk edit gridEdit many rows at once in one grid, only the columns you chosecolumns*, page_size, show_search
questionnaireQuestionnaireA questionnaire that shows a question depending on an earlier answer (one condition pair); each submit creates a new recordcondition_field, condition_equals, condition_target

C · Overview and reports

Recipe idNameWhat the screen doesMain options (* = required)
dashboardDashboardNumbers and charts over a date range, worked out in the browser from the data it readdate_field*, metric_field, label_field, default_range_days
workbenchWorkbenchAnalyse by grouping on one dimension at a time and see each group's count, or the sum/average of one number fielddimensions*, measure_fields, label_field
reportReportA grouped report with totalsgroup_by*, metric_field, label_field, show_search
timelineTimelineEvents in time order as a timeline, such as visit historywhen*, heading*, detail
overviewOverviewAn app-wide overview from a bound summary and up to three bound query lists, tied to no single table—
overview-recordRecord overviewAn overview of one record with up to four related tables, such as one patient with their appointments and invoices—

D · Work and time

Recipe idNameWhat the screen doesMain options (* = required)
calendarCalendarRows on a calendar (no recurring events yet)time_field*, label_field*, default_view
bookingBookingBook a resource for a time slot, with an overlap check on this page (not in the database, so two people booking overlapping slots at the same moment can both succeed); everyone who sees the grid sees every bookingresource_field*, start_field*, end_field*, title_field, slot_minutes, open_hour, close_hour, slot_key_field
kanbanKanban boardA board with a column per status; move a card with a select menu (no dragging needed)status_field*, title_field*
worklistWork queueA work queue ordered by priority that an assignee can takeassignee_field*, title_field*, priority_field, due_field
approval-inboxApproval inboxAn approval inbox where an approver approves or rejects with a reason. Separation of duties is partial: it checks that at least one role can file without being able to decide; a role with both rights can approve its own request, and an admin can decide any rowheading*, status*, reason*, decided_at, choices
case-trackerCase trackerTrack one case with a stage bar you can move forward or backtitle_field*, stage_field*, assignee_field, notes_field
rule-tableRule tableReorder, enable/disable and check the existing if…then… rules, one condition per rule, with a warning for conflicting rules; rules cannot be added or removed here, and this page does not run themcondition*, comparison*, value*, outcome*, priority*, enabled
ganttGantt planA Gantt plan of tasks, view only (bars cannot be dragged yet)heading*, start*, end*, depends_on

E · Commerce

Recipe idNameWhat the screen doesMain options (* = required)
catalogCatalogA product catalogue with price, stock status and a one-at-a-time category filterheading*, price*, stock*, category*, columns
product-detailProduct detailOne product's page with price, compare-at price and availability (no cart yet)heading*, price*, currency*, picture, compare_at, availability
checkoutCheckoutA cart and order confirmation; no real charge, confirming only changes the order's statusorder_field*, quantity_field*, price_field*, label_field*, status_field*, choices
order-trackingOrder trackingOrders with a status bar; anyone who can update the row can advance the status or cancel — who may do which step is not limited yetstatus_field*, label_fields*, cancelled_value, reason_field
billingMy membershipMy membership: request an upgrade by bank transfer with a slip that an admin checks (no card payment); can be added as a page from Studioplans*

F · Content

Recipe idNameWhat the screen doesMain options (* = required)
searchSearchSearch one kind of data with a query and filtersheading*, filter_field*
asset-libraryAsset libraryA file library: upload, replace, delete and group in folders by text label (no version history yet)file*, title, folder
document-editorDocument editorOpen one document and edit its title and body with autosave (no comments or history yet)title_field*, body_field*, status_field
articleArticle (CMS)CMS articles: draft → review → publish, plain textstatus_field*, title_field*, body_field*, publish_at_field

G · Conversation

Recipe idNameWhat the screen doesMain options (* = required)
inboxTeam inboxA team inbox grouped by thread; everyone who sees the list sees every conversation (no attachments yet)thread_field*, body_field*, author_id_field*, author_name_field, created_field
copilotAI assistantAn AI assistant that answers from the data the page read; your question and at most 50 rows go to the AI provider the admin set (uses AI while the app runs)label_field*, context_fields*, action_field
feedFeedA feed of posts and replies (no likes, and this page cannot edit or delete posts yet)body_field*, author_id_field*, author_name_field, parent_field, created_field
lessonSelf-check quizA multiple-choice self-check scored at the end; the answers sit in the browser, so it is practice, not an examquestion_fields*, answer_key*, score_field, completed_field*

H · Account

Recipe idNameWhat the screen doesMain options (* = required)
onboardingOnboarding checklistA getting-started checklist you can resume; the steps come from the table's fields and are fixedstep_fields*, dismissed_field
profileMy profileMy profile: edit name, language, time zone and consentname_field*, locale_field, timezone_field, consent_field

I · Administration

Recipe idNameWhat the screen doesMain options (* = required)
settingsSettingsA settings page: switch things on and off and edit values, in groups (no change history yet)key_field*, value_field*, enabled_field*, group_field
operationsOperations logA log of background runs with status, times and attempts, to see which job failedheading*, status*, started_at*, finished_at*, message, attempts, choices
notification-centerNotification centerA notification centre with an unread counter (not push or real-time)message*, when*, read*, link

J · Public

Recipe idNameWhat the screen doesMain options (* = required)
landingLanding pageA public marketing page for signed-out visitors, read-only, with no contact form yettitle_field*, body_field*, image_url_field, link_url_field, link_label_field, order_field

K · Place and device

Recipe idNameWhat the screen doesMain options (* = required)
mapMapAn OpenStreetMap map with the list beside it (opening the map sends the viewer's IP address to OpenStreetMap)label_field*, lat_field*, lng_field*, category_field
kioskKiosk check-inAn on-site check-in point: enter or scan a code to check in, such as an attendee's badge codecode_field*, name_field*, checked_in_field*, checked_in_at_field
fieldwork-offlineOffline field recordRecord field reports without a signal and sync when back onlinerecord_fields*, client_ref_field*, label_field, date_field
device-captureDevice captureTake a photo or scan with the device, with a note and an amount, such as a receipt (no live camera preview and no audio recording yet)photo*, note, amount
live-monitorLive monitorA live monitor with status lights and last-seen times, refreshed in cycles (not push)title_field*, status_field*, last_seen_field*, status_choices, stale_minutes, refresh_seconds, reading_field, command_field

L · Canvas

Recipe idNameWhat the screen doesMain options (* = required)
diagramFlow diagramA flow diagram of boxes and arrows with draggable positions, one outgoing arrow per boxlabel_field*, x_field*, y_field*, next_field
media-editorMedia player / editorA media player with trim points, stored beside the file; the file itself is not cutmedia*, kind*, title*, captions, trim_in, trim_out
printPrint viewA print view of one record using the browser's print dialog; it never makes a PDF fileheading*, fields*, date, body

M · Advanced studios

Recipe idNameWhat the screen doesMain options (* = required)
knowledge-graphKnowledge graphA read-only knowledge graph that draws declared foreign-key relations as links and stops at a node cap (uses the graph kit's display)label_field*, max_nodes

The other options on the form

OptionWhat you can doRules and limits
Relations between tablesThe form lists every relation whose target table could not be found, with candidates. A name that sounds like a person (provider, doctor, staff, owner, author, assignee, reviewer, approver, member …) most likely means the platform's users table. AI helps pick a target in the same call that fills the form.An undecided one is asked of a person: pick a target (an existing table or “User”) or drop the relation. While any is undecided the form cannot be approved. Nothing is guessed.
Visibility per tablePick one of three per table: owner (each person sees only their own rows) · role (visible to the roles you name) · public (every signed-in user sees every row, with no owner or role limit). All three still require signing in.A role table must name at least one role. A role name starts with a letter, is at most 64 characters, and may use letters, digits, _ and -. An owner table needs a field that points to users.
CRUD switches per tableTick which of list, read, create, update and delete a table has. Only the ticked routes are generated.At least one is required, because an empty list would read as the full set. app-base's own tables (users and so on) are not on this form.
Screen words in Thai and ChineseThe compiler writes page titles and field labels in English. When the form is drafted, AI translates them into Thai and Chinese once, stores them on the form for you to read and edit, and the compiler uses those words.Each label is short, at most 60 characters. One call translates at most 200 strings; the rest stay English. A word you edited is never overwritten. If translation fails the form still works; it just compiles in English as before.
The “/” landing rowEvery app already has a public landing page at “/”. When the design describes that page as a marketing page, the form marks it platform instead of having AI write a new page, and lets you choose one of 5 templates (the template table below).A “/” that is the app's own content, such as a signed-in dashboard, keeps the normal rules. A value that is not on the template list is dropped.
What AI fills on the formOne AI call for whatever the system cannot answer itself. It answers JSON only, using only the names it was given, never writes code, and everything passes the compiler's checks before a person is asked to approve.Nothing is guessed. A field that does not exist is refused. What cannot be built becomes custom with a reason; nothing is dropped silently.

Scheduled jobs on Thai time

OptionWhat you can doRules and limits
Name and timeGive the job a name and a time as HH:MM on Thai time.The name is at most 120 characters. The system converts to UTC (minus 7 hours) itself.
DaysEvery day, or pick weekdays (0 = Sunday … 6 = Saturday).If you pick days, pick at least one.
StepsAvailable steps: summary (a compiled summary) · when (a condition; needs a summary before it) · document (a document from an earlier summary) · notify (by email, LINE or webhook) · fetch_file (fetch a file) followed straight away by import (into a table).A job has at most 20 steps and needs the scheduler kit in the build. Export steps and in-app notices are not supported yet. An owner table cannot be used by a scheduled job, because a job has no signed-in user. A job the compiler refuses is taken off the form with one note naming the reason; other jobs are unaffected.
Who it runs as and notifiesA job runs, and notifies, as the admin role only.The numbers in the mail use Thai words drafted with the job, not aliases.
Jobs drafted from the designWhen the design carries timing words such as “every morning” or “scheduled report”, the form proposes a job for it and adds a summary if none exists.A proposal that fails the checks is taken off with a note; it is never left as open work.

Alerts: a summary → a condition → send

PartWhat you can doRules and limits
The summaryThe job reads a number from a compiled summary.It must be a summary the form already has.
The conditionCompare one number from the summary with a fixed value using <, <=, >, >=, ==, != (for example sales < 10000). If the condition does not hold, the run ends as skipped and nothing is sent.One number per condition, and the value is a real number, not text.
Channel: emailEmail the admin with the numbers in the body; no attachment — documents can be downloaded on the app's /jobs page.The recipient is the admin role.
Channel: LINESend to the LINE users, groups or rooms you typed on the form.At most 10 ids per job. An id starts with U, C or R followed by 32 lower-case hex characters. Only admins type them, and they leave the app for LINE. The channel-client kit must be in the build.
Channel: webhookPost to the webhooks the admin registered for an event name.The event name is lower-case letters, digits, _ . - and at most 80 characters. The webhooks kit must be in the build.

Sync jobs into a table

OptionWhat you can doRules and limits
Shape of a syncfetch_file (fetch a file or query result) followed by import (into a table), run at the time and on the days you set (every day or chosen weekdays).fetch_file must be the step right before import, because import reads only the last file.
Source: a SQL databaseRead from an external database the app's admin registered, with ONE query; the result's column names are the table's field names.Read-only: ONE SELECT (or WITH … SELECT), at most 4,000 characters, at most 10,000 rows, 30-second timeout. The data-connectors kit must be in the build. A query not clearly read-only is refused.
Source: object storageRead one file by its key from an object-storage source the admin registered.The key is at most 200 characters. The connectors-object-storage kit must be in the build. An upload source cannot be written on a form.
Target tableInsert rows that are not there yet, matched on the fields marked unique. A matching row counts as a duplicate and is not inserted again.The table must accept spreadsheet import (create and list switched on, and the imports kit in the build), have at least one unique field as the dedup key, and must not be an owner table.

Landing templates for “/” (5)

TemplateBest for
productA general software product or tool (the default)
serviceBooking, appointments, reservations or queues at a real-world service
communityContent, members, groups or people sharing with each other
personalWellbeing, habits, self-tracking or reflection for one person, calm in tone
businessB2B, operations or teams at work: proof, stats, a demo call to action

Who picks, in order: you, on the form's “/” row → AI, in the same call that writes this page's copy (only a name on the list is kept) → keyword rules over the design; with no match you get product. Every template reads the same content; they differ in section order and treatment.

Kits that serve endpoints and screens

KitEndpoints it servesPage it ships
chatPOST /api/v1/chat · GET /api/v1/chat/history/chat
jarvisPOST /api/v1/jarvis/ask · GET /api/v1/jarvis/status/jarvis (needs a compiled read route)
ar-viewerGET /api/v1/ar/models/ar
motion-eventsPOST · GET /api/v1/motion/events/motion
chartsGET · POST /api/v1/charts · PUT /api/v1/charts/{mid}—
importsPOST /api/v1/imports/{domain}/preview · POST …/confirm · POST /api/v1/imports/batches/{batch_id}/rollback · GET …/template—
documents-exportPOST · GET /api/v1/documents · GET /api/v1/documents/{did}—

A kit counts as doing the work only when it is in the build. When several kits match equally, nothing is guessed and the endpoint stays remaining work. Kit prices follow the quote.

Checks before approval, and what blocks it

RuleIf it fails
Every table the compiler builds must be on the formBlocked: a table left off would get every CRUD route.
Every table needs at least one operationBlocked: an empty list reads as the full set.
A role table must name a roleBlocked.
Every relation must be decidedBlocked until you pick a target or drop the relation.
The form must compile as approvedAnything the compiler's validator still refuses, such as an owner table with no key to users or two collections that clash, blocks approval and says why in the compiler's words.
An endpoint or screen the compiler cannot buildDoes not block approval: it becomes custom with its reason on the form and joins the remaining work.
Editing after approvalThe form goes back to draft. While it is a draft, a build ignores it entirely (it compiles and is priced as if there were no form), so approve it again before you build.

The “Ready to build” card: 4 prices

LevelWho builds the restPrice
scaffoldYou, with your own AI, from the remaining-work guide. AppForge scaffolds and compiles what compiles.Per the quote
economyThe economy AI (Haiku) builds the rest.Per the quote
balancedThe balanced AI (Sonnet) builds the rest.Per the quote
premiumThe premium AI (Opus on critical stages) builds the rest.Per the quote

Price = scaffold and compile + kits + the AI part × the share of work still left (weighed by the model cost of each endpoint and screen), rounded up once. Nothing compiled = today's flat price; everything compiled = the scaffold price. An approved form can only lower the price. The card shows today's flat price beside every level. This is the default method. An admin can set a per-item rate instead (never above the AI part of the flat price), and each level's AI model is a default the admin can change.

Remaining work: what counts and what does not

ItemCounted as remaining?
crud, query, aggregate, summary and document endpointsNo: already compiled, unless the form as a whole does not compile.
platform endpointsNo: app-base serves them.
kit endpointsNo when the kit is in the build (counted as done without AI); yes when it is not.
custom endpointsYes, with each entry's reason.
compiled screensNo, unless screen compile is off for that build or the form as a whole does not compile.
platform screensNo.
kit screensNo when the kit is in the build; yes when it is not.
custom screensYes.

The remaining-work guide (downloaded from the card) lists these same items with a prompt for your own AI, and says plainly that files the compiler already wrote must not be rewritten, renamed or duplicated. If the form as a whole does not compile, every item except platform counts as remaining work, with the reason.

Studio: everything it can do

Reference tables for Studio: canvas edits, the command workbench, adding a page, rebuild, history, environments and references. Every row says whether AI is used and, where the system fixes it, how many credits.

Direct edits on the canvas

What you doHowScope and limitsAI and credits
Colours, fonts, radius, spacing (design tokens)Enter the CSS variable name such as --primary and a value such as #4f46e5 or oklch(0.6 0.2 280), then Apply.Applies to the whole app (design-tokens.css). The name is lower-case letters, digits and -; the value is at most 120 characters. The project needs a design system.No AI · 0 credits
Text on the screenClick text on the preview. If it can be edited directly, a text box appears; type the new words and press Apply.Two kinds can be edited directly: (1) text with a key in the app's dictionary, saved in the language file the preview is showing (en th zh ar de es fr id ja ko pt vi); (2) the title and field labels of a compiled screen, saved into the design so they survive a rebuild, with the same words in every language. Other text has no fixed address yet; type a request instead.No AI · 0 credits
Logo and background imageThe Studio canvas has no image upload button yet. Type a request such as “make the logo blue”, or upload under “Branding Images” at the design review step before you build.Branding Images: PNG, JPEG, WebP or GIF up to 2 MB, a logo and a background per language (en, th, zh or the default), used on the app's landing page.AI helps when you type a request · 2 credits · uploading uses no AI
Move a field up or downClick a field on the preview and press up or down, choosing “This screen” or “Every screen of this data”.Changes the field order of a compiled screen.No AI · 0 credits
A free-text instruction about what you pickedType what you want changed in the prompt box and AI edits the app's files.Used for anything the direct paths above do not cover. You always see the price and confirm first.AI helps · 2 credits

Every Studio change goes through one pipe: quote → confirm → do → reconcile. Even a 0-credit direct edit passes through it, so you see the price first every time.

How Studio sorts a typed request into 6 routes

RouteWords that send it hereResultAI and credits
tokencolor, font, radius, spacing, density, themeA design-token editAI helps · 2 credits when typed as free text
assetlogo, banner, image, heroAn image editAI helps · 2 credits when typed as free text
textrename, wording, labelA text editAI helps · 2 credits when typed as free text
spec_changefield, column, table, api, endpoint, permission, role, approve, workflowStudio says the change belongs in the requirement, not just the page, and offers “Open Change Request”. If the request could be either a spec change or a style edit, you pick the meaning first; nothing is quoted yet.No AI in Studio
refuseauth, login, password, secret, .env, migrationRefused, with a reasonNo AI
overlay_aiEverything that matches none of the aboveGoes to the AI editor that edits the app's files from free text.AI helps · 2 credits

This is a keyword table you can inspect, not a model guessing. An unrecognised request goes to the AI editor rather than being refused. Admins can see how often each route was picked and how often a person overrode it.

Command workbench: what a typed sentence can change (9 kinds)

ChangeWhat it doesLimits
set_screen_queryBind a list screen to an existing query and name its search parameter.Uses a query the form already has.
set_screen_relatedShow related rows beside a record (such as a patient's appointments), with complete en/th/zh field labels.Bound to one query and one source field.
set_screen_patternSwitch a screen between a list (data-list) and a list with detail (master-detail).These two only.
set_screen_copyEdit a screen's title and field labels in Thai, English and Chinese.All three languages are needed.
set_screen_field_orderSet the order of fields on a screen.At most 64 fields, no duplicates.
set_screen_lookupsMake a field that points to another table a searchable picker labelled by a field you choose.At most 8 per screen.
set_screen_form_presentationLay a form out flat, in sections or in tabs; set the groups, a sticky summary and each control (single-line, multiline, radio).At most 8 groups and 64 controls.
set_screen_recipeMove a screen onto a screen recipe (the recipe tables in the API Spec part) with its options.The model is shown at most 8 fitting recipes, ranked against your sentence and the table's fields. Options must pass that recipe's own check against the real table.
upsert_queryCreate or change a GET query of one table, with filters and sorting.At most 12 filters, 8 sorts and 200 rows. The path is fixed literal segments and must not overlap platform routes (auth, admin, appforge).

If a command cannot be done with these 9, the answer is “cannot”, with a reason, never a guess. Creating new tables or editing data is not on this list.

Command workbench: quote → confirm → plan → review → apply

StepWhat happensAI and credits
1 QuoteYou type a sentence on the screen you chose. The price is shown first, with no model call yet.No AI at this step
2 ConfirmYou confirm the price once per command.AI helps · 2 credits per command (one inference)
3 PlanThe model proposes the typed changes (the 9 kinds above) in one call. If the answer fails the checks the system asks for one repair; if it still fails, the answer is “cannot”, with reasons.AI helps · included in the 2 credits
4 ReviewYou see before and after for every change before anything is written. Possible states: quoted, planning, review, needs clarification, cannot, failed, applied.No AI
5 ApplyThe compiler checks and writes the files, with no AI call and no further credit. It is recorded in history and can be reverted.No AI · nothing more charged

One command makes at most 12 changes. If you confirmed but planning never started (for example, the server stopped midway), the credits are refunded automatically.

Add a page, rebuild, history and revert

What you doHowScope and limitsAI and credits
Add a pageAdd a page that renders on app-base's own routes and needs no table. Pick the template and set its path, title and options. The template you can add now: “My membership” (billing), default path /membership; it needs the plan names.The path has 1–3 segments of lower-case letters, digits and -, each at most 40 characters. The title is optional, at most 60 characters; left blank, the template's own name is used in every language. Refused with a reason when the path is taken or reserved, the options fail, or the page will not compile. A double submit adds one page.No AI · 0 credits
RebuildRecompile the saved design with the current compiler, then refresh the preview.Deterministic: the same design gives the same result every time.No AI
HistoryEvery change made through Studio is recorded as a numbered entry you can list.Kept with the project.No AI
RevertUndo the latest entry, restoring the files it changed; if it changed the design, the design is restored too (an added page is removed, for example).Only the latest entry can be reverted; an older one is not undone in the middle, because that would discard changes you never asked to lose.No AI · 0 credits

Environments Dev / SIT / UAT and promotion

EnvironmentWhat it isWhat it takes to get in
devThe live preview you are editing.None: it is the source for SIT.
sitA separately running copy for the first round of checks.The sit.approve grant and passing the gates.
uatA separately running copy for users to accept.A SIT already deployed at the very same version (hash), the uat.approve grant, and passing the gates.
productionThe real app your users use. Approving this step records that the version is ready to go live; the actual deploy still goes through the normal deploy step.That version through UAT, the promote-to-live grant, and passing the gates.

Every step uses the same gates as the Publish button: a reforged app must pass its parity check and leave no open gap. The requester and the approver must be different accounts. SIT and UAT close themselves when idle, and how many may run at once per project is capped; an admin sets both. Promotion uses no AI.

References: images and URLs

ReferenceWhat it doesAI and credits
An image (a screenshot)Reads a design from the picture, such as its colours, with one vision call. What it reads must be grounded in the picture or it is refused (the credits are still used, because the model was called). Then pick values one at a time, such as one colour, and apply each as a direct edit, which costs no credits.AI helps · 3 credits
A URL (a web page)Reads the page's palette from the signals in its HTML.No AI · 0 credits
URL → page mapMatches each page of the reference site to the most similar page of your own app, as a checklist, using your project's own page list.AI helps · 2 credits one call

An image has one step and no further plan, because it is read completely when created. Both AI-priced actions show their price for you to confirm first.

Features an admin has to switch on first

CapabilityWhat must be on
Studio (the visual editor)The Studio switch. When off, the Studio menu and pages do not show.
The command workbench and RebuildStudio, plus spec-first generation and screen compile.
Image and URL referencesStudio plus Studio's references switch. When off, no vision call ever fires.
SIT, UAT environments and promotionStudio's environments switch.
Environment settingsAn admin sets how long an idle SIT/UAT lives and how many environments one project may run at once.
Studio command check (shadow)The Studio command check switch. An admin turns it on to measure only: nothing is undone and the customer sees nothing.

If you do not see a menu or button described here, ask your admin whether it is switched on.

What your app gets

Everything in this part is written by the compiler from the approved form, without AI (except Jarvis answers). Screenshots are from the MindDNA app built on the live system.

  1. The app's dashboard

    YouNo AI
    The dashboard of the MindDNA app (built on the live system)
    What you do
    • The app owner sees today's numbers and shortcuts to the main jobs.
    What the system does
    • Built from the summary/aggregate in the form + the dashboard screen recipe.
    Where AI helps

    This step does not call AI. The system does it all itself.

  2. Thai forms that are compiled

    YouNo AI
    A Thai form that is compiled (MindDNA)
    Checking the Thai words on screen in the API spec form
    What you do
    • Users fill in data in fields that match the tables.
    What the system does
    • The input fields, data types and Thai words come from the approved form.
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: Right image: the screen-word check page in the API spec form, in Thai.

  3. Privacy (PDPA) comes with every app

    YouNo AI
    The PDPA privacy page that comes with every app
    What you do
    • Users see and manage their own consent.
    What the system does
    • The PDPA kit is added to every app automatically.
    Where AI helps

    This step does not call AI. The system does it all itself.

Everything the app gets

CapabilityWhat it doesWho does it
DashboardToday / this week / this month numbers, charts, summarycompiler
Export to CSV / ExcelEvery table that has been compiledcompiler
Thai documentsInvoices, receipts, quotations, certificates, with VAT, withholding tax and the amount in Thai wordscompiler
Excel importPreview → confirm → can be undone, with Thai-style data checkskit
Scheduled jobs + notificationsSet Thai time · summary → condition → notify by email, LINE or webhookcompiler + kit
Data syncPull files from a SQL database or object storage and import them (read-only)compiler + kit
Permissions and rolesChoose in the form who sees which table (owner · role · public)compiler
5 landing page stylesProduct · service/booking · community · personal · business (you can choose)compiler (AI chooses the style when building)
Multi-languageThai and Chinese words on screencompiler (AI helps make the words when making the form)
PDPAConsent and privacy pages come with every appcompiler
AR viewerView a 3D model and place it in a room on supported phoneskit
Motion eventsThe camera detects a raised hand, a wave, or someone entering or leaving, on the device; no image leaves the devicekit
Jarvis, the in-app assistantAsk by text or voice; tools come from the form · writing data needs a person to confirmkit + AI (answers go through the gateway)

Credits, prices and value

1 credit ≈ ฿0.74–1.00, depending on the pack you buy

  1. Your credits

    YouNo AI
    Credit balance and top-up packs
    Credit usage history, and tax-invoice details
    What you do
    • See your balance, buy a top-up pack (big packs get a bonus and free premium kits), see the history, and fill in tax-invoice details.
    What the system does
    • Top-ups go through Stripe · the history shows every charge and top-up.
    Where AI helps

    This step does not call AI. The system does it all itself.

    Tip: This image is from the demo system, so it shows the message “Billing is not turned on yet”.

  2. Calculate ROI

    YouNo AI
    The ROI calculator
    What you do
    • Enter the size of the work and the build level, and see the time and money saved compared with hiring a team.
    What the system does
    • Calculated from standard values an admin can set · there is a page explaining how it is worked out.
    Where AI helps

    This step does not call AI. The system does it all itself.

Summary: where AI helps

Every step that is not in this table is done by the system without calling AI.

StepWhat AI does
Tell your ideaOptional: “Plan First” lets AI briefly interview you before the idea goes to the design rooms (there is a fallback if AI does not answer).
RequirementsAI expands the idea into a requirements document (the main model for this job: Claude Opus 5.5).
Design with 6 AI rooms at onceThis whole step is AI's work: each room thinks from a different angle (screens and usage · architecture · database · API · mobile · security), then another AI merges them.
Readiness before building, and styleThe 3 style proposals come from the design AI already made (no extra AI call).
Brand images, and ask 2 models before decidingAI creates the images (OpenAI) · Model Duel calls 2 models. Both are optional.
The API spec form (the heart of 6GL)AI classifies once (a low-cost model, with no random variation in its answers).
Screens: screen recipes, and kits that can do them insteadThe “Words on screen” button writes the Thai and Chinese words for every page (1 AI call).
Build the app: backend → frontend → UX/UI → QA → deployAI writes only the items that cannot be compiled (developer · UX · QA, depending on the chosen budget) · writes the landing-page text and chooses the template · writes the README.
Polish with AI, and Gap AnalysisAI Polish: AI changes things as you ask (credits are charged first) · Gap Analysis: AI finds gaps in the app.
Ask in words, add a page, and historyCommands in words: AI makes a plan once, from a list of recipes the system picked out, and you check it before applying.
Ask for changes later (Change Council)AI phrases the request once → 6 AI advisor seats each weigh in from a different angle and summarise the decision → AI writes code to the approved spec.
What Reforge isAI reads the code and maps it · masking secrets, reading the old API's shape and comparing old with new use no AI
Ingest and understandIngest uses no AI · Understand: 6 AI labs each read one side at the same time (database · API · screens · business rules · sign-in and permissions · outside services), then one spec is merged from them
The migration plan, then build the new appAI writes the migration plan and the new app's design · reading the old API's shape uses no AI · building works like any other build
Prove they match — old vs newThe comparison uses no AI · when a case fails, AI suggests the fix but does not apply it; you apply it on the build page or in your own workflow
HAR files, run history and data migrationMigration script: AI writes the column mapping and the script, then the system checks its safety before it can be downloaded · reading a HAR uses no AI
Reforge DIY: take the repo and port it yourselfThe porting guide has a prompt per feature, in the order to do them, ready to paste into your AI · the porting runs on your own subscription
Connect rea: rea takes the old app apart, and its evidence goes into ReforgeTaking the old app apart uses your AI client and subscription, not AppForge credits · AppForge uses AI once, to turn the evidence into a design after you approve

Most screenshots are from the latest AppForge (main) on a DEV machine with demo data (6 Oct 2026), with no real customer data. The part “What your app gets” uses real screenshots of the MindDNA app built on the live system (30 Sep 2026). The time at each step comes from building MindDNA on the live system.