Ship the first version as real pages.
plainkit is a good fit when the first version should already be the app. An MVP, a prototype, and a proof of concept use the same pages you would keep. The screens are the boring ones: sign in, a summary, records, settings, status, and the occasional live room.
The first version
A person or an agent can stand up the click-through by copying recipes. The shape does not change when the stub becomes an API. Later edits stay on the page that owns the resource.
MVP
The first version is the HTML files. Each screen has a URL a person can open. When the API arrives, point the same DataProvider at it. There is no mock stack to throw away.
Prototype
Copy the nearest recipe and change the resource. In-memory data is enough for a click-through. The script still calls load, create, and save, so a server does not force a rewrite.
Proof of concept
Prove one job: a list, a form, or a live room. The proof is a full page load. An agent spends the session on that screen. Interceptor can answer 401 and 403 while the API is still a stub.
The screens it handles
These are the jobs in the recipe catalog. Copy the page that matches. Leave documents, spreadsheets, and a client-side app shell to something else.
Sign in
A cover page with fields and a second button. Login is a recipe plus a DataProvider. The kit does not ship an identity-provider SDK.
Dashboard
A summary: filter, metric cards, tabs, and a ranked list. Copy it when the page is a glance, not a record editor.
Lists and tables
An empty state, create, and remove. A table keeps search, pager, and dialogs on the same URL and calls load again. Those links stay real page loads on the list recipe.
Settings
A form with autocomplete tokens and a read-only plan. English stays in the markup. Submit calls save.
Activity
Facts, a status stepper, and a log. Local time and UTC are painted from time elements on the page.
Live room
One document with a socket. LiveProvider connects, sends, and closes. A vote, a timer, or a presence list fits this shape.
Access and errors
Hide a control from a role. Deny a whole page with a 403 document. 404 and 500 are HTML files the server returns.
Another language
English ships in the HTML. A JSON overlay fills the gaps. Missing keys keep the English that is already on the page.