lifesheets

Other pages: FAQ

This Page

Tutorial video

Getting Started

Lifesheets are custom micro-journaling applications that allow you to record a series of dated events about your life (or your loved ones lives, e.g. data about your children’s development). In addition to collecting data that you enter, Lifesheets also allow you to do calculations on that data, and to visualize the data using graphs.

Here is an example lifesheet used to track blood pressure over time. This one has 5 entries:

Note: Under the hood, Lifesheets are standalone Mavo applications. However, you don’t need to know Mavo, or HTML & CSS to create them; that’s what the Lifesheets app is for!

Data & storage

You use lifesheets to manually record data about an aspect of your or your loved ones' life. When you use a lifesheet to enter data, the data is not saved until you click "Save".

Why do I need to save manually? Why doesn’t my lifesheet just autosave?

This is because every time you save, lifesheets creates an entry in the history of your saved data, that you could use if you need to ever restore previous data (e.g. if you accidentally delete entries). Do note that restoring previous data is not yet exposed through the lifesheets interface. In the event that you need to restore past data, you would need to either contact us. If you know of any programmers, they could do it too (just tell them you need to "restore a past git commit").

Both lifesheets you create, as well as the data they record, are stored on a site called GitHub. You also need a GitHub account to log in to Lifesheets.

You may have used services like Dropbox or Google Drive. GitHub is similar to those, but it also records all the different versions of your data over time (version control) and allows publishing the stored files as a website, which is why Lifesheets uses it as a backend.

Lifesheets uses GitHub to store both the applications you create, as well as the data you save when using these applications. This means that unlike commercial tracking apps, even if Lifesheets goes away at some point, your trackers will continue to work, as you fully own them, they are standalone applications stored in your own GitHub account, not some proprietary system that we control.

Read and edit mode

Each lifesheet application has two modes: A read mode and an edit mode. If you are logged in, it will automatically start in edit mode, to facilitate input. If not, it will be in read mode. This is primarily useful in public sheets, to share data with other people in a nice presentable format. On private sheets, you will likely be spending most of your time in edit mode.

Entries

Each lifesheet contains a list of entries. These are the actual dated life events that you are tracking. For example, in our blood pressure tracker, the entries are the blood pressure measurements.

How do I customize the noun used for entries?

By default entries are just called "entry" (plural: "entries") but you can customize that in the "Main info" panel:

Entries are composed of little building blocks called fields. Fields store data (properties), display calculations (expressions), or can even modify other fields programmatically (actions).

The four temporal categories of trackers

In the preliminary research we did to create Lifesheets, we saw that most tracking use cases fall into 4 main categories regarding their handling of time:

Lifesheets supports all four main types of trackers. New sheets start off as Single date but you can select the right type in the Dates & Times settings (Main Info panel):

Note that the same type of tracker may belong to a different temporal category for different people, depending on what matters to you, and how frequently you plan to use the tracker you are creating. For example, someone tracking their blood sugar results from their periodic medical tests may opt to only have dates, since the event is infrequent enough that times don't matter. However, a diabetic that measures their blood sugar several times a day would opt to have times as well. As another example, someone tracking trips may decide that it's the dates that matter, and only track start and end date, or they may decide to track more details, such as times as well.

You can change between temporal categories for your tracker at any point, even after you have tracked data. Any data you have entered will be preseved, even if it’s not displayed due to a change in temporal settings (e.g. if you change from a date range to a single date, the end dates you have already entered will be preserved and will still be shown if you change back to date range in the future).

Fields

Each entry contains a list of fields ("Entry fields"). Fields are little building blocks. There are four different types of fields:

The lifesheet itself can also contain fields ("General fields"), which can be useful for aggregate calculations (e.g. averages), general settings (e.g. "child's date of birth"), or general actions (e.g. "Add new entry with type = 'a'").

Each type of field can exist both on entries (entry field), as well as on the lifesheet itself (general field).

Auto-generated fields

Every lifesheet starts with four fields, three on entries and one general field:

Two of them are:

There are also two fields related to dates and times:

When you change the temporal category of your tracker, you will get more or fewer of these:

If you are tracking times, you also get:

If you are tracking ranges of dates, you also get:

If you are tracking both ranges and times, you also get:

Other properties have different behavior when tracking date/time ranges, compared to just date ranges:

Always select the right temporal category, rather than trying to add your own date & time properties. There is logic in these auto-generated fields (e.g. when to hide them, default values etc) that you would have to manually re-create in that case. Only add your own date & time properties if you need to track additional temporal data.

Properties

Properties are the core of each tracker: they hold the actual data you are storing. They take many different forms: numbers, text, toggles, even images and videos! Once you add a new property you can select what data it should hold from the top of the "Edit property" panel:

Default values

One way to make your lifesheet very fast to use, is to set appropriate default values. A default value is the value a property will have when you create a new entry, before you edit it.

These can be either literal values or expressions that set the default value based on the values of other properties. When the default value is an expression, it updates when the properties it depends on update (a bit like an Expression field that you can also edit). Sometimes, the Lifesheets editor will suggest presets that are expressions, e.g. for entry properties, the previous or next value:

The auto-generated temporal properties are already set up with suitable default values, for example date defaults to today's date

but you can change it to another preset, or an entirely different expression (or value):

For example, the auto-generated end_date field when you are tracking date/time ranges has a default value that is a pretty complicated expression:

if(end_time, if(end_time < time, date(date + 1 * days()), date))

What does this do? First, the outer if() ensures there is a default value only when end_time is set. Then, the inner if() says that the default value is the day after date if the end_time is smaller than time, otherwise the default is the same as the date value of the same entry.

Default value presets are always expressions, so after you select one, default value text field will be in expression mode. If you want to enter literal values, make sure to click the 𝑓𝑥 icon to toggle it back into literal mode:

Expressions

Expressions allow you to dynamically display calculations and other dynamic information. If you have used spreadsheets (e.g. Excel, Google Sheets, Apple Numbers) you are already familiar with the concept of expressions ("formulas").

Unlike spreadsheets where you use column or cell references like "B5" to refer to values, in Lifesheets you use the field names you specified. Every property has a name, and thus can be used in expressions. You can optionally name expressions as well, to use them in other expressions.

How do I write expressions? What are functions, operators, and special properties?

For many types of expressions thta are common to trackers, you will not need to compose them manually. Instead, you could simply use one of the "Quick add" widgets:

You can search all available functions, operators, and special properties in the integrated function browser that you can access when you click on any expression text field:

In addition to the value of expression fields, you can also write expressions in many other places. When a setting supports entering an expression, instead of a plain text field you will see a text field with a T symbol on the right. You can click the T symbol to switch to writing an expression instead of a plain text value:

Notice that the text field now gets a light green background and the icon on the right changed to an 𝑓𝑥. The 𝑓𝑥 symbol means that the content is interpreted as an expression, and the light green background tells us that the expression was checked and seems correct. If there are errors (e.g. a missing parenthesis), the field will become red instead, and an error will be shown.

Some settings expect an expression by default, in which case the field will be in expression mode from the beginning. Similarly, you can click the 𝑓𝑥 symbol to change the text field back to plain text mode.

Actions

Actions are buttons that actually modify your entered data. Any modifications are temporary, until you actually Save.

There are two types of actions:

Why would we set values through an action when we can have default values? One reason is that sometimes there may not be a clear default. With actions, we can create several buttons, each of which creates new items with different values.

Spacers

The last type of field, spacers, are for controlling where the other fields are placed. They can help act as a divider, to move all fields after the spacer to the right of the row, or to create new lines, so that fields after them have their own separate row.

Charts

Charts allow you to get an overview of your data grouped in a certain way. If you’re familiar with spreadsheets, think of them like pivot tables.

There are several types of chart presentation (bar chart, pie chart etc). Every chart starts off as a table by default, so you can easily make sure you are displaying the correct data.

You add a chart by clicking on the + button in the Charts panel. Then you create your chart by selecting three main things: