@@ -0,0 +1,168 @@
7+grant_type = ["Proposal"]
8+grant_category = ["App Dev"]
12+description = "An application for tracking and reviewing your outdoor workouts via a native mobile OS application, a webapp, and an Urbit backend for your sensitive location data"
14+assignee = ["~hanryc-tirpur"]
15+champion = ["~famhut-wolpyx"]
23+# Trail - An Outdoor Activity Tracker for Urbit
24+Outdoor workout trackers, especially when including social features, generally require users to submit sensitive location data to their servers. With %trail, an Urbit user can keep control over their sensitive location data with their own secure, private server. In addition, social features, such as workout challenges, will not require revealing a user’s social graph to a third party.
26+Due to the nature of location tracking and map displays in mobile, it would seem best to have two different UIs depending on the context.
27+When out in the world and recording a run/bike ride/hike, the user should be using a native mobile experience.
28+When on a laptop reviewing previous exercises, a user would be using grid (browser), and therefore, will not have the capability to record exercise.
30+The Gall App API will be documented clearly using the `%docs` app, and will address the following considerations:
31+- The %trail gall agent should be kept as small as possible.
32+- There are many possible data sources, implying that the %trail gall agent should not include data source parsing knowledge
33+- Not all users will care about all data sources. This implies:
34+ - Data sources should be separate from the %trail gall agent
35+ - There should be a mechanism to register their existence with the main gall agent
36+ - There could be 3rd party data source parsers that can be install separately from the %trail desk
37+- Indoor and outdoor activities will need to be treated differently.
39+### Milestones & Compensation
41+**Milestone 1: Gall app backend**
43+*1 Star, Estimated delivery date: November 30, 2022*
46+- `%start-activity`: Starts an activity, making it available to receive location information.
47+- `%save-path`: Saves a list of locations to the currently active activity.
48+- `%stop-activity`: Stops an activity, but will allow activity to be continued at a later time.
49+- `%end-activity`: Ends an activity and will not allow further updates.
50+- `%delete-activity`: Deletes an activity.
51+- `%save-settings`: Saves settings, including whether distance should be measured in miles or km
53+- View details of a previously completed activity
59++$ activity-type ?(%bike %walk %run)
60++$ distance-unit ?(%mile %km)
61++$ settings [unit=distance-unit]
72+ segments=(list segment)
74+ total-elapsed-time=@rs
76++$ activity-summary [=id total-distance=@rs total-elapsed-time=@rs]
78+ $: start-time=timestamp
79+ end-time=(unit timestamp)
84++$ activities ((mop id activity) gth)
86+ $% [%start-activity =id =activity-type]
87+ :: [%stop-activity =id path=(list location)]
88+ :: [%end-activity =id path=(list location)]
89+ :: [%delete-activity =id]
90+ [%save-settings unit=distance-unit]
91+ :: [%save-locations =id path=(list location)]
94+ $% [%activities list=(list activity-summary)]
95+ [%activity =activity]
100+**Milestone 2: Basic outdoor workout tracking on iPhone**
102+*1 Star, Estimated delivery date: December 31, 2022*
104+- Choose between metric and imperial unit systems
105+- Live tracking of an outdoor workout
106+- Path on map updates as user moves
107+- Displays current pace, total distance, average speed
108+- View summary of previously completed workouts
109+- View details of a previously completed workout
111+**Milestone 3: Grid application developed in React**
113+*1 Star, Estimated delivery date: January 15, 2023*
115+- View summary of previously completed workouts
116+- View details of a previously completed workout
118+- Can modify the time of the workout to remove a time period at the end of a workout
120+**Milestone 4: Ingest data from various sources**
122+*1 Star, Estimated delivery date: January 31, 2023*
124+- Ingest data from common activity file types
126+ - Parse Strava data and save to %trail agent
130+ - Ability to enter Strava API access token
131+ - Ability to upload files to be parsed
132+- documentation of agents delivered via `%docs`
133+- App Ecosystem listing submitted via https://urbit.org/applications/submit
135+## Future Integrations
136+When more of the base layer of health applications get built out, there are some exciting features that can be created by combining data from other apps.
137+- A workout routine / training program. This app could also include weightlifting programs as well as cardio.
142+ - Users can develop their own routines
143+ - Personal trainers can provide users with custom routines
144+- Exercise challenges. Challenge your friends to see who can accumulate the most miles in a month
152+- Spin class. Join a decentralized spin class
158+ - Spin class instructors
165+I am a recent Hoon School Live and App School Live graduate. I also have 18 years of experience developing web apps and APIs using various back-end technologies including .NET and node.js, as well as modern JavaScript front-end frameworks including React/Redux, Vue, and Svelte over the past 6 years.
166+As importantly, I am extremely passionate about having fitness tracking and biometric data integrated with Urbit. It was the first use case that came to mind while reading the initial blog post describing Urbit.