Components
All the components that make up Polanner
Schedules
A schedule is a list of activities. It is either personal or automatic. The purpose of this distinction is to have the personal schedule copy over data from automatic schedules, and let the user correct them, while preserving the source's automatic schedule
Personal Schedule
Each user has one personal schedule, their actual life schedule.
Automatic Schedule
Each source has a automatic schedule, which is uneditable, and automatically generated by the device.
For example a Garmin account would have a automatic schedule composed of the activities that Garmin tracked, for example biking, running, sleeping, etc.
Activities
An activity is the basic building block of a schedule. It has the basic information, start, end, and a source in automatic schedules. It also has a activity type, for example Running, Biking, Sleeping, etc, and data related to that type.
Example activity:
{
"startDate": "2025-01-01T12:00:00.000Z",
"endDate": "2025-01-01T13:00:00.000Z",
"source": Source.Account.Strava,
"activityType": ActivityType.Running,
"activityTypeData": { // Determined by the ActivityType
"distance": 5.73,
"duration": 1260,
"averageHeartrate": 143.3
}
}Activity Type
An activity type is a type of activity, with a category (used to group activities for statistics), and a data schema. The data schema is very flexible and powerful, used to track custom information
Example activity type:
{
"name": "Running",
"color": "yellow1",
"category": Category.PhysicalActivity,
"dataSchema": {
"distance": Number,
"duration": Number,
"averageHeartrate": Number
},
}Sources
A source is a source of data. There are two types of sources, a device or a account. All sources have metadata, activities (and from those activities a automatic schedule). Additionally, each device also has a stream.
Example source (device):
{
"name": "Desktop Computer",
"activities":
[
{
"startDate": "2025-01-01T12:00:00.000Z",
"endDate": "2025-01-01T13:00:00.000Z",
"source": Source.Device."Desktop Computer",
"activityType": ActivityType.Coding,
"activityTypeData": {
"project": "polanner",
"language": "javascript",
"editor": "visual-studio-code",
}
}
],
"streams": [
{
"name": "DisplayPort-1",
"type": "monitor",
"metadata": {
"x": 0,
"y": 0,
"height": 1080,
"width": 1920
}
},
{
"name": "DisplayPort-2",
"type": "monitor",
"metadata": {
"x": 1920,
"y": 0,
"height": 1080,
"width": 1920
}
}
],
"metadata": {
"lastSeen": "2025-01-01T12:00:00.000Z"
}
}Device
A device is a subset of a source, with a additional streams property. It is a physical computer.
A stream is a recording of a display (ex. monitor), video (ex. camera), or audio (ex. microphone) source. It is used to automatically record your device sources, for security and archival reasons. It may be disabled.
Supported devices:
- Windows
- MacOS
- Linux
Planned:
- Android
- iOS
Account
An account is a subset of a source. It is a account linked from a 3rd party source.
Supported accounts:
- Garmin
- Strava