This app serves one simple purpose: Exporting workout data from the Health.app on iOS to a git repo on GitHub.
At the first launch of the app, you can connect your GitHub account, then the app checks whether a repo with the name health
exists and, if not, it automatically creates it as a private repo. The initial export dumps all workouts, distances, and daily activity data (the rings on Apple Watch) to .csv files, one per year. The app also registers a background task that gets activated whenever you finish a new workout and then updates the .csv files.
You can join the TestFlight Beta here. Note that you need to open the link on your iPhone, otherwise TestFlight will show This beta isn't accepting any new testers right now.
🙄
Once you have set up the app (and done some workouts), you can use an Actions workflow to generate workout stats on your GitHub profile. Here's the one from mine:
Steps:
- Create the file
.github/scripts/hadge.rb
with this Ruby script. - Adjust the
DISPLAYED_ACTIVITIES
near the top of the script to match your top workouts. More than 5 won't fit into a pinned gist. - Create the file
.github/workflows/hadge.yml
with this workflow. - Enable Actions on your repo.
- Create a new public GitHub Gist here.
- Create a personal access token with the gist scope here. Copy it.
- Go yo your repo settings, tab
Secrets
. - Create a secret
GH_TOKEN
with the personal access token copied in step 6. - Create a secret
GIST_ID
with the ID of the gist from step 5. The ID is the last part of the gist's URL. - Trigger an Actions run, either by finished a workout 🙃 or by tapping on a workout in the app, then on the ⊕ icon in the bottom-right corner.
Find other awesome pinned gists in matchai's awesome-pinned-gists repo.
Hadge relies on swiftlint and
sourcery. They can be installed
via homebrew via the provided Brewfile
by running brew bundle
or manually.
Hadge requires a GitHub OAuth application. You will need to create an OAuth App
to test and build a version of the application. Once you have your App, you will need to create a Secrets.xcconfig
file locally at the appropriate path that contains the Client ID and Client Secret.
You can locally override the Xcode settings for code signing
by creating a DeveloperSettings.xcconfig
file locally at the appropriate path.
This allows for a pristine project with theis own OAuth App and code signing set up with the appropriate developer ID and certificates, and for a developer to be able to have local settings without needing to check in anything into source control.
You can do this in one of two ways: using the included setup.sh
script or the files manually.
- Open Terminal and
cd
into the project directory. - Run this command to ensure you have execution rights for the script:
chmod +x setup.sh
- Execute the script with the following command:
./setup.sh
and complete the answers.
Create a plain text file at the root of the project directory named DeveloperSettings.xcconfig
and
give it the contents:
CODE_SIGN_IDENTITY = Apple Development
DEVELOPMENT_TEAM = <Your Team ID>
CODE_SIGN_STYLE = Automatic
ORGANIZATION_IDENTIFIER = <Your Domain Name Reversed>
Set DEVELOPMENT_TEAM
to your Apple supplied development team. You can use Keychain
Access to find your development team ID.
Set ORGANIZATION_IDENTIFIER
to a reversed domain name that you control or have made up.
Create a plain text file at the root of the project directory named Hadge/Secrets.xcconfig
and
give it the contents:
GITHUB_CLIENT_ID = "<Your GitHub App Client ID>"
GITHUB_CLIENT_SECRET = "<Your GitHub App Client Secrent>"
Set GITHUB_CLIENT_ID
to your GitHub App Client ID and GITHUB_CLIENT_SECRET
to your
GitHub App Client Secret.
Now you should be able to build without code signing errors and without modifying the project
This Privacy Policy describes how your personal information is handled in Hadge for iOS.
We do not collect, use, save, or shared any of your personal data. Hadge exports your workout data to a private GitHub repository in your personal GitHub account. To do this, the app needs access to your Health data. You can choose to disable this at any time in the Health app or by deinstalling Hadge app.
Hadge does not collect any data for any other purposes, and does not send any data to any service other than GitHub. The connection between Hadge and GitHub is directly established through the GitHub API, secured by SSL, and authenticated through your GitHub user. You can delete this connection at any time by revoking the token in your GitHub account settings or by deinstalling Hadge app.
We don’t collect personal information from anyone, including children under the age of 13.
Hadge is published under the MIT License.
Copyright (c) 2020-2021 Thomas Dohmke
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.