Core concepts
A single page explainer of the core concepts, what they are, and how they relate.
Functions
Code containing custom behaviour.
- Just Python functions with a single message argument.
- Store and change the state of things via the datastore.
- Signal events and activity by publishing messages.
PubSub
Listen for / emit in-app messages.
- Messages have a meaningfully named channel, and arbitrary payload.
- Publish (pub) messages to channels, to indicate when something happens.
- Subscribe (sub) to messages on a certain channel with a function, to handle when certain things happen.
Media
Digital assets used within the app.
- Raw images, sounds, videos, text and data.
Widgets
User interface elements or media handlers.
- Widgets are common UI elements like buttons, dropdowns, image viewers, video players...
- Widget attributes may subscribe to messages so they auto-update.
- Containers define the widget's formation and layout.
- Based on BeeWare's Toga framework.
Cards
Show things to the user.
- Cards display / layout widgets.
- User interactions with widgets in cards emit messages - e.g. "clicked".
Transitions
Move between cards.
- Transitions usually have a single source card and destination card.
- Some transitions define multiple source cards and a single destination card.
- Transitions may also have a user defined function associated with them.
DataStore
Keeps state, stores data.
- A very simple key/value store.
- When the datastore is changed, it emits a message to say what has changed.
- May include search capabilities.
- May have a backend that syncs with remote storage.
Tasks
Do things until an outcome / result is achieved (e.g. a network request).
- Blocking tasks display a "waiting" card, in which you can cancel the task. When finished either transition to a success card or transition to an error card.
- Background tasks, when the outcome is known, either emit a message or update the datastore.
- Common tasks already built into the framework (get geo-location, call a remote API, interact with a web-socket, handle a long running user defined function).
Application
Contains all the above.
- An application addresses / works within a specific domain.
- Has a name, icon and optional splash screen (displayed when starting up).
- Delivered via the web, or as a cross-platform package via BeeWare's Briefcase project.