https://github.com/scottlovegrove/sparmin
Log your sauna, steam room, cold plunge and pool time as a proper Garmin activity — timed spot by spot, with live heart rate and an end-of-session breakdown. A Connect IQ watch app in Monkey C, plus its website.
https://github.com/scottlovegrove/sparmin
astro connect-iq garmin monkey-c sauna smartwatch wearables
Last synced: 2 days ago
JSON representation
Log your sauna, steam room, cold plunge and pool time as a proper Garmin activity — timed spot by spot, with live heart rate and an end-of-session breakdown. A Connect IQ watch app in Monkey C, plus its website.
- Host: GitHub
- URL: https://github.com/scottlovegrove/sparmin
- Owner: scottlovegrove
- License: mit
- Created: 2026-07-03T13:52:12.000Z (24 days ago)
- Default Branch: main
- Last Pushed: 2026-07-23T23:34:43.000Z (3 days ago)
- Last Synced: 2026-07-24T01:10:53.694Z (3 days ago)
- Topics: astro, connect-iq, garmin, monkey-c, sauna, smartwatch, wearables
- Language: TypeScript
- Homepage: https://sparmin.scottlovegrove.co.uk
- Size: 2.27 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Sparmin
Monorepo for **Sparmin** — a Garmin Connect IQ watch app for logging thermal spa
sessions (saunas, cold plunges, pools) as a FIT activity — and its marketing
website.
## Workspaces
| Path | Package | What it is |
| ---------------- | -------------------- | ---------------------------------------------------------------- |
| `apps/watch` | `@sparmin/watch` | The Connect IQ watch app (Monkey C). Build/test with `build.sh`. |
| `apps/marketing` | `@sparmin/marketing` | Marketing site + changelog (Astro), deployed to GitHub Pages. |
npm workspaces tie the two together (`apps/*`), but the watch app is **not** a
Node project — its `package.json` only exposes the `build.sh` targets so they
can be driven from the repo root.
## Getting started
Each workspace is self-contained; work inside its directory.
```bash
# Watch app — see apps/watch/README.md for the full build/run/test guide.
cd apps/watch && ./build.sh # side-load the primary devices
npm run build:watch # …or drive it from the repo root
# Website — see apps/marketing/README.md.
npm run dev:marketing # dev server
npm run build:marketing # type-check + static build
```
## Linting and formatting
The Node side of the repo (i.e. `apps/marketing`) is linted with
[oxlint](https://oxc.rs) and formatted with oxfmt, configured in `.oxlintrc.json`
and `.oxfmtrc.json`. The watch app is Monkey C and is excluded from both.
```bash
npm run check # lint + format check, no writes
npm run fix # apply both
```
Read `apps/watch/README.md` for the watch build/run/test workflow and design
decisions, `apps/watch/AGENTS.md` for the rules when changing that app, and
`apps/watch/CODEBASE.md` for its structural map.