Typeaway

Typeaway is an app. You write pages in plain language, and reads them into things, then builds what the pages say. This page is one of those pages: every sentence on it was read by the same parser the app runs, and everything you can click here was found by that reading, not placed by hand.

A page is a markdown document. Headings are its structure, and @ names its things. A page never declares a kind: a thing that has members is a category, and a category is what a type used to be.

is the page you are reading. It lives in a workspace under pages/, like any other page, and derives it the same way it derives yours.

A thing is anything a page names with @. It is defined where the page first says what it is, and cited back to that sentence ever after.

  • is the bar fixed at the top of this page, with three keys on it.
  • is the surface on the right, which opens when you click a thing or a heading.
  • is what reads a page into before it builds: each sentence, what it does, and what it names.
  • is the one verb: from the map and the store it makes the scripts and the ontology, and nothing else.

The nav has these keys:

  • signs you in with GitHub, through the gateway.
  • asks the gateway for an account; today that door opens by invitation.
  • fetches the desktop app once a build has shipped.

The only relation is is a. It can be said by name, as in ; by sentence, as in "sign in is a key"; or by structure, a heading with a list under it. All three are the same statement to the map, and the map keeps the sentence that said it.

When you press Build, derives two outputs from the map: the ontology, which is every thing with its kind and its fields, and the scripts, which are what the things do. A screen is derived from the things a page says an app shows. Nothing is generated outside the workspace's own .work folder.

What happens when a page changes? The map reads the changed sentences again and leaves the rest alone, so an edit moves only what it touched. What happens when two pages name the same thing? The name resolves while it is unique, and the completion shows both parents when it is not.