Skip to content

About

Website and privacy policy of SetRack, an offline gym log for Android

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

27 Commits

Folders and files

Repository files navigation

SetRack

SetRack is a gym log for Android that keeps your sets and progress on your phone, with no account.

A session in progress: barbell bench press, three sets logged, with weight and rep controls. Add exercise: suggestions ordered by the sets each muscle is still short of this week. Exercise page: estimated 1RM of 93 kg and its chart since October.

What makes it different

The app does not declare the INTERNET permission. Its only Android permission is VIBRATE, for the tick when you log a set. A script in the app repo checks this against the merged release manifest.

Your data lives in the phone's local storage. You can save a backup file to Downloads, restore from it, and export everything to CSV. The backup format is documented in the app, so data from another app can be brought in.

It is free. There are no ads, no subscription and no analytics.

It suggests exercises by the sets each muscle still needs this week. A primary muscle counts a full set and a secondary one counts half. Estimated 1RM uses the Brzycki formula, and sets above 12 reps are left out because the formula overestimates there.

It ships with 104 built-in exercises and three starter programs, and you can add your own exercises. The interface is in 11 languages, in kilos or pounds.

How it is built

The app is an offline-first PWA wrapped as a native Android app with Capacitor 8. It uses React 19, TypeScript, Vite and Dexie on IndexedDB. Its code is in a private repository.

The last full run before release 1.0.9 (11 November 2026) passed 271 unit and integration tests (Vitest) and 186 end-to-end tests (Playwright on a mobile Chromium profile).

ESLint rejects any function with cyclomatic complexity above 6, more than 40 lines or more than 3 parameters. CI runs it on every push to master, with the type check, both test suites and an unused-code check (knip). The end-to-end suite includes detectors for text that overflows, gets cut or overlaps. They run the app in all 11 languages at 360 and 300 px wide; 300 px stands in for a large system font.

SetRack is developed with AI coding agents. They work under a written CLAUDE.md that I maintain, with the architecture, the formulas, the data schema and the quality rules above.

This repository

This is the source of the website. It is static HTML with no JavaScript and no external requests.

  • index.html and en/, pt/, de/, fr/, it/ hold the home page in 6 languages. Spanish is at the root.
  • Each language has a privacy policy page, for example privacidad/ and en/privacy/. The home page also carries the full policy, because / is the URL registered in Google Play.
  • build/texts.mjs holds all the text and build/build.mjs writes the 12 pages and sitemap.xml. Run node build/build.mjs from the repo root and commit the output. Do not edit the generated index.html files by hand.
  • assets/ has the stylesheet, the icon, the app screenshots per language (assets/img/) and the Open Graph images.
  • fonts/ has Archivo, self-hosted, with its OFL license.
  • DESIGN.md records the design direction and the claims the site may make.
  • docs/ has the screenshots used in this README.

GitHub Pages serves the main branch from the root. There is no build step on GitHub: a push to main publishes the committed files.

Bugs and questions: https://github.com/iggykimi/setrack-web/issues

About

Website and privacy policy of SetRack, an offline gym log for Android

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages