Products · Build a dot

Developer overview

What a dot is, how its pages work, what's in a dot's project and what stays stable while Dot is in beta.

A dot is a mini app inside Dash, Monime's money app for Sierra Leone. Meter top-ups in Bo, Lungi ferry tickets, a Freetown cookshop menu: each can be a dot that people open from Dash, with nothing to install.

You build dots with Dot, Monime's framework, and the Monime CLI. Each dot belongs to a business's Space, its account on Monime, and you work on the dot as a member of that Space. If you're new to dots, start with the quickstart, then build a ticket dot in the tutorial.

How a page works

A dot is a set of pages. Each page has a view (view.dml, markup a lot like HTML), a state (its data) and a controller (TypeScript that changes the state when someone taps or types).

pages/index/view.dml
<View>
  <Text variant="title">{{ count }} taps</Text>
  <Button onClick="increment">Tap me</Button>
</View>
pages/index/controller.ts
export default definePage({
  initialState: { count: 0 },
  mutations: {
    increment: (state) => ({ count: state.count + 1 }),
  },
});

{{ count }} shows the state's count and updates when it changes. The button runs increment, a mutation. Pages and state explains mutations, and the actions that do slower work like calling your server.

What's in a project

File or folderWhat it holds
dot.jsonName, version, permissions and the hosts the dot calls
dot.tsThe list of pages and the theme
pages/A folder for each page
statics/Images and your own icons
.envPublic settings
.dot/Types the CLI writes. Leave them alone

Project configuration goes through each one.

What's stable in the beta

These won't change during the beta: Dash's calls and error codes (Dash API 1.0), payments, the dot.json fields and permissions, definePage and defineDot. They can gain new options in 1.x releases, but nothing is removed or changed. Components aren't frozen. They can gain props and change how they look, so check your pages after you update Dot. See Versions, and What changed in Dot for each release.

Keep reading