Skip to content

Introduction

Custom Inputs provide a way to use the Fulcra platform to track (record?) and instrument parts of your daily life. Track your mood, coffee intake, (some mystery third use case), and more, using anything that can make HTTP requests, including services like IFTTT, iOS shortcuts, and IoT buttons!

Use case: Mood tracking

Meet Parker! 🧑‍🦰

Parker wants to track their mood throughout the day to compare it to the rest of the data collected in their Fulcra Datastore.

To do this, Parker creates a Custom Input called "My Mood" in the Fulcra Portal or the Context app. (This is an assumption that inputs will be createable via Context in the future) The new Custom Input provides them with a unique URL they can now use to record mood events.

https://fulcra.io/e/IrkWQlfc

Any time a HTTP request is made to this unique URL, a new event is recorded from Parker's custom input.

Tips for hypernerds: A custom input URL is effectively just a webhook endpoint! Custom inputs will also take HTTP POST requests and record the given data as long as it's valid JSON under 128k!

Parker can now record when they're feeling a mood, but how about a specific mood? This is where tags come in!

Hold on! Tags? What are tags?

Tags provide additional context to events recorded from custom inputs. In Parker's case, different moods can be tracked by adding a tag argument to their Custom Input URL.

https://fulcra.io/e/IrkWQlfc?tag=happy

Records an event on Parker's Mood input tagged happy.

Multiple tags can be used with an input URL by appending multiple tag arguments.

https://fulcra.io/e/IrkWQlfc?tag=happy&tag=ecstatic

Custom Inputs can also be configured with a default set of tags that apply to every event recorded.

(Something to consider when solving the URL mutability problem Ash brought up is attacking it via UX means -- offer the user 'url builder' UX functionality on a custom input by selecting/entering tags and presenting them with a copy & paste URL)

Retrieving events from the platform

Timeline

(An example of setting up a timeline row to display Parker's mood events, we need to actually flesh out how this works)

Notebook/Python lib

(An example of using the fulcra python lib to query a csv of Parker's mood events, dependent on this being implemented)

Life API

(An example of using the Life API to request Parker's mood events, as well as a link to life api openapi spec for the method)

[
    {
        "id": "",
        "fulcra_userid": "",
        "recorded_at": "",
        "tags": [
            "happy"
        ],
        "record_data": {},
        "source_name": "My Mood",
        "source_id": "com.fulcradynamics.event.IrkWQlfc"
    }
]

Existing copy in Portal

Create a custom input with a unique URL associated with it to record custom datapoints to your Fulcra Datastore.

Create a custom input to record your own simple events to your Fulcra Datastore

iOS shortcuts and physical buttons can be configured to access the URL. A tag can be associated with more than one custom input.

Each custom input has a unique URL that can be used with iOS shortcuts, physical buttons, or other services to record events.

Every time the unique URL is accessed:

  • Each tag is recorded as an individual metric datapoint (Wrong!)
  • The custom input itself is also recorded as an individual metric datapoint (Right!)

View recorded data by adding the desired metrics to your Timeline.Any changes to this custom input after saving it only affect future inputs recorded and will not apply to your data historically.