Skip to content

gymgym

Log workouts, follow progressive plans and track body weight. Every client talks to the same GraphQL API through the same generated SDK.

One contract

schema.graphql is printed from the server schema. The SDK, its types and these reference pages are generated from it, so client and server can’t drift.

Cloudflare native

One Worker serves the Astro web app and the API. Data lives in D1, rest timers in a Durable Object, reminders run on Cron.

Accounts

Better Auth with Google, GitHub, passkeys and guest accounts. The CLI and native apps sign in with the device code flow and bearer tokens.

Private by default

Each user sees only their own rows. The security guide explains the layers and the tests that prove them.