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.