smooth-app
A collaborative, free and open database of ingredients, nutrition facts and information on food products from around the world
Free stick-figure exercise animations and workouts with voice coaching: strength, yoga, Pilates, stretches and more. Works offline on phones and computers.
HealthJavaScript · PythonGitHub @sanickiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Exercise animations and workouts with a 3D stick figure: 356 exercises (yoga, bodyweight, core, Pilates, bands,
free weights, chair-based, stretches, balance), linked to their easier, harder and other-equipment versions, each
with a map of the muscles it works and stretches (and a workout's total), and a workout player built to be used
from the floor — including on the cover screen of a foldable flip phone — with optional voice coaching and a swap to
an easier or harder version mid-workout.Read the full README ↗Exercise animations and workouts with a 3D stick figure: 358 exercises (yoga, bodyweight, core, Pilates, bands, free weights, chair-based, stretches, balance), linked to their easier, harder and other-equipment versions, each with a map of the muscles it works and stretches (and a workout's total), and a workout player built to be used from the floor — including on the cover screen of a foldable flip phone — with optional voice coaching and a swap to an easier or harder version mid-workout.
Use it: https://sanicki.github.io/nstructr/ (install it from the browser menu to use it offline and full screen).
Read the user guide: getting started and installing, the exercise library, making workouts, the workout player on the cover screen, Create with AI, editing exercises, sharing and backups, settings, and troubleshooting.
Found an exercise that looks wrong, or have an idea? Open an issue. Made an exercise, or improved one? Submit it from the app: Share → Submit to library (how). It's checked automatically, then reviewed.
No framework and no bundler: plain JavaScript, one JSON file per exercise and workout, and a build script that
validates the library, runs animation checks and writes the site to _site/.
npm install # once
node tools/build.mjs # validate + animation checks + build _site/
python3 -m http.server 8000 -d _site # then open http://127.0.0.1:8000/
--check-only runs just the checks (what CI runs on pull requests); --no-checks builds fast while working on
the UI. The build deletes and recreates _site/, so restart the server after each build.
What's still to do, and questions waiting on the owner: ROADMAP.md.
main.CLAUDE.md (the short rules) and
HANDOFF.md (formats, engine, design decisions). In particular:
library/exercises/<id>.json and library/workouts/<id>.json; the file name is the
id, and library ids never start with u-.tools/known-issues.json. Every pose must be one a flexible body can do (tools/rom.cjs), and
no two exercises may move the same with the same equipment and measure (src/similar.js): a known exercise
under another name goes in its otherNames.localStorage keys without a migration.node tools/build.mjs and make sure it passes.errors line that should be empty):
pip install playwright pillow && playwright install chromium
NSTRUCTR_URL=http://127.0.0.1:8000/nstructr.html python3 tools/e2e/<test>.py
Check anything the workout player shows at 360×398 (a foldable flip phone's cover screen), with nothing important at the
bottom of the screen.
New or changed exercises need a source link (source.url) to a reputable page; node tools/check-links.mjs
checks that every link still answers.python3 tools/audit.py (accessibility, 48 px touch targets, text size, sideways
scrolling, in light and dark; see docs/audit-2026-09.md) and fix what it reports.HANDOFF.md (and the user guide and its screenshots if users will notice) in the
same pull request. Screenshots come from .Contributions are accepted under the MIT license below.
Read these, in this order, before changing anything:
| File | What it's for |
|---|---|
CLAUDE.md | Commands, rules and where the code is (short; read first). AGENTS.md points here too. |
HANDOFF.md | The full picture: file formats, engine pipeline, validation rules, UI inventory, storage keys, tests, roadmap, open questions |
docs/3d-skeleton.md | The 3D figure (exercise format v2): why, the joint model and range of motion, how the library was converted |
docs/equipment-equivalents.md | Equipment versions of every library exercise: what was found, what's in the library, what's next |
docs/collection-research.md | Common exercises per collection the library doesn't have yet, and equipment to add (a proposal) |
docs/audit-2026-09.md | The Sep 2026 audit: accessibility, Material Design, security, performance |
wiki/ | The user guide: how the app behaves from a user's side |
schema/*.schema.json | JSON Schemas for exercise and workout files |
To write an exercise or workout for a user rather than change the code, use the app's Create with AI (see the guide): its instructions describe the format.
MIT: the engine, the app and the exercise library.
If NstructR is useful to you, you can support it with a donation.
tools/wiki_screenshots.pymain, saying what changed and how you tested it. CI runs the build and the
checks; merged changes deploy to GitHub Pages.