{"id":16914605,"url":"https://github.com/TrainAsONE/trainasone-connectiq","last_synced_at":"2025-12-22T17:30:27.961Z","repository":{"id":61100859,"uuid":"102778702","full_name":"TrainAsONE/trainasone-connectiq","owner":"TrainAsONE","description":"TrainAsONE Garmin workout download app (Connect IQ) app","archived":false,"fork":false,"pushed_at":"2024-04-13T17:50:22.000Z","size":305,"stargazers_count":21,"open_issues_count":5,"forks_count":3,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-04-14T08:06:15.278Z","etag":null,"topics":["connectiq","garmin","monkey-c","running","training","workout-download"],"latest_commit_sha":null,"homepage":"https://www.trainasone.com/","language":"Monkey C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TrainAsONE.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-09-07T19:43:19.000Z","updated_at":"2023-09-27T09:58:14.000Z","dependencies_parsed_at":"2023-09-22T02:18:45.408Z","dependency_job_id":null,"html_url":"https://github.com/TrainAsONE/trainasone-connectiq","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TrainAsONE%2Ftrainasone-connectiq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TrainAsONE%2Ftrainasone-connectiq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TrainAsONE%2Ftrainasone-connectiq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TrainAsONE%2Ftrainasone-connectiq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TrainAsONE","download_url":"https://codeload.github.com/TrainAsONE/trainasone-connectiq/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219851500,"owners_count":16556284,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["connectiq","garmin","monkey-c","running","training","workout-download"],"created_at":"2024-10-13T19:15:34.377Z","updated_at":"2025-12-22T17:30:22.690Z","avatar_url":"https://github.com/TrainAsONE.png","language":"Monkey C","funding_links":[],"categories":["Device Apps"],"sub_categories":["Older resources"],"readme":"# trainasone-connectiq\nTrainAsONE Connect IQ app\n\nThis is a simple Connect IQ app to download workouts from the\nhttps://trainasone.com AI running coach.\n\nIt is available in the Garmin Store as\nhttps://apps.garmin.com/en-US/apps/dfbebe0d-1cff-471d-afc0-3cb0be0c89c3\n\n## Requirements\n- Garmin device or simulator\n- ConnectIQ 2.4, PersistedContent and advanced workouts required for workout download\n- ClientId and ClientSecret from garmin@trainasone.com\n\n## Current functionality\n- Authenticate against TrainAsONE server via OAuth2\n- Indicate next workout details (including distance \u0026 duration)\n- Download next workout to device\n  - Run next planned workout\n  - Refetch next planned workout\n  - Login as different TrainAsONE user\n  - Open TrainAsONE on mobile device\n  - Set workout step target\n  - Toggle adjust temperature and undulation and include run back step\n\n## Supported devices\n\n### Download capable\n- Captain Marvel\n- D2 Charlie\n- D2 Delta\n- D2 Delta PX\n- D2 Delta S\n- D2 Mac1\n- Darth Vader\n- Descent G1\n- Descent Mk1\n- Descent Mk2 (glance)\n- Descent Mk2s (glance)\n- Enduro\n- Epix (Gen 2)\n- fenix 5\n- fenix 5 plus\n- fenix 5S\n- fenix 5S plus\n- fenix 5X\n- fenix 5X plus\n- fenix 6 (glance)\n- fenix 6 Pro (glance)\n- fenix 6S (glance)\n- fenix 6S Pro (glance)\n- fenix 6X Pro (glance)\n- fenix 7 (glance)\n- fenix 7S (glance)\n- fenix 7X (glance)\n- fenix Chronos\n- First Avenger\n- Forerunner 55 (glance)\n- Forerunner 245 (glance)\n- Forerunner 245 Music (glance)\n- Forerunner 255 (glance)\n- Forerunner 255 Music (glance)\n- Forerunner 255s (glance)\n- Forerunner 255s Music (glance)\n- Forerunner 265 (glance)\n- Forerunner 265s (glance)\n- Forerunner 645 (glance)\n- Forerunner 645 Music (glance)\n- Forerunner 735XT\n- Forerunner 745 (glance)\n- Forerunner 935\n- Forerunner 945 (glance)\n- Forerunner 945 LTEglance)\n- Forerunner 955\n- Forerunner 965\n- Instinct 2\n- Instinct 2S\n- Instinct 2X\n- Instinct Crossover\n- MARQ Adventurer (glance)\n- MARQ Athlete (glance)\n- MARQ Aviator (glance)\n- MARQ Captain (glance)\n- MARQ Commander (glance)\n- MARQ Driver (glance)\n- MARQ Expedition (glance)\n- MARQ Golfer (glance)\n- MARQ 2 (glance)\n- MARQ 2 Aviator (glance)\n- Rey\n- Venu 2 (glance)\n- Venu 2 Plus (glance)\n- Venu 2S (glance)\n- Venu D\n- Venu Mercedes Benz\n- Venu Sq 2\n- Venu Sq 2 Music\n- vivoactive 4\n- vivoactive 4S\n\n### Can download, but not start workout\n- Venu Sq\n- Venu Sq Music\n\n### Not download capable\n- D2 Air\n- D2 Air x10\n- D2 Bravo\n- D2 Bravo Titanium\n- fenix 3\n- fenix 3 HR\n- Forerunner 230\n- Forerunner 235\n- Forerunner 630\n- Forerunner 920XT\n- Venu\n- vivoactive\n- vivoactive 3\n- vivoactive 3 Mercedes Benz\n- vivoactive 3 Music\n- vivoactive 3 Music LTE\n- vivoactive HR\n\n\nWhen run on non download capable devices it should still show the next workout\nand allow ajusting the workout preferences.\n\n## To build\n- Install Visual Studio with Garmin ConnectIQ plugin and configure\n- Checkout this repository\n- Copy source/Config.mc.template to source/Config.mc\n- Obtain ClientId and ClientSecret from garmin@trainasone.com\n- Make the world a better place (hoo!)\n\nThis is still a work in progress. It runs as a widget.\n\n## Workout files overview\n\nThe Garmin FIT format can be used to hold a workout description,\nessentially a list of steps, each with a duration and target pace\nor heart rate range. The Garmin Connect system can push workout\nfiles all watches which support advanced workouts.\n\nA subset of these watches can run Connect IQ apps, and a subset of\nthese support PersistedContent, which allows Connect IQ apps to\ndownload FIT workout files and pass them to the watch to run.\n\n## How does the app work\n\nOn startup the app checks if there is an OAuth2 token stored for\nthe current server host. If one is not found the user is redirected\nto the TrainAsONE server on their phone to login and grant access,\nwhich then returns a grant token back to the app. The app then\nconnects back to the TrainAsONE server to convert this grant token\nto an access token, which is then stored.\n\nThe app then uses the access token to request a plannedWorkoutSummary\nfrom the TrainAsONE server, which is a JSON object containing the\nuser's preferences and some summary data about their next workout\n(These are merged into a single request to reduce the number of\nnetwork calls required).\n\nIf successful the workout summary is stored and if supported by\nthe watch the matching workout FIT file is also downloaded. The\nsummary is then shown to the user.\n\nIf the request fails an error message is shown with an option to\nshow any previously stored summary.\n\nWhen displaying a workout the user can press the menu or select\nbuttons to select different options such as switching the workout\nstop target from pace to heart rate, switching temperature adjustment\nor logging in as a different TrainAsONE account.\n\n## Source formatting preferences\n- 2 character spaces\n- Use spaces rather than tabs\n- Unix line endings\n\n## Releasing\n- Update version in source/Version.mc\n- Copy manifest-downloadcapable.xml to manifest.xml, run Application Export Wizard, upload generated .iq as TrainAsONE\n- Copy manifest-allwatches.xml to manifest.xml, run Application Export Wizard, save generated .iq as TrainAsONE-lite\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTrainAsONE%2Ftrainasone-connectiq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTrainAsONE%2Ftrainasone-connectiq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTrainAsONE%2Ftrainasone-connectiq/lists"}