DSL Overview

This section outlines our custom domain specific language for the application.

Motivation

We started developing these features in a much more conventional way, as a web application connected to a SQL database. As we used the app, we felt something was missing:

  1. Ownership - For true growth to happen, we know that honesty and vulnerability are key, two things that we feel strongly about enabling in our app. We wanted our users to feel safe to share about their private goals and sensitive work relationships in our app, and in order to better facilitate that, we wanted to let our users own their own data, not for it to be in the cloud where someone else had control over it.
  2. Visibility - We wanted the user to know exactly what the app was storing, no hidden data that they couldn't control.
  3. Insights - We want AI to be able to easily read and comment on the data but in a way that the user can control.

This DSL is our answer to those problems. It enables a private, locally stored database that is human readable and, with a bit of training, human writable.

Once onboarded, a user can choose to only interact with their workspace through the desktop application, however, the DSL will remain at the core.

Workspaces

At the core of our DSL is a workspace, which is a logical group of people that the user can relate to. Most people will have a workspace for their place of employment. But other people may choose to track their professional relationships outside of work and in other areas as well.

Workspace Structure

Workspaces are structured by convention:

  1. ./core.ppl contains the core, shareable concepts that make up the workspace, like members, jobs, and matrices. This is meant to be shareable with others in that same organization, to help them get started faster.
  2. ./people.ppl contains the user-specific connection to the core. Here declares themselves as the user and determines who their contacts are.They also set an intention for how to connect with each.
  3. ./work this is where the user tracks their work for themselves and each of their contacts. This is in the form of journaling connections
  4. ./assets this is where files are stored that the workspace relates to.

Console App

We provide the people command line application in order to help you work with a workspace without having to open the full app. There are two commands to use:

people init

Will set up a new workspace.

people check

Will ensure that a workspace is valid.

This tool is self documenting so run:

people

To learn about all the options.

Visual Studio Code Extension

We also provide a Visual Studio Code Extension for this DSL, which provides syntax highlighting.