LogIt

Plugins

A LogIt plugin extends the app with one of nine things:

FamilyWhat it doesRuns as
exercise-packAdds exercises to the cataloguePure data — not code
mobility-packAdds drills to the Mobility block’s cataloguePure data — not code
progression-algorithmSuggests your next sets for an exercisesuggest(input) in the sandbox
mobility-progressionSuggests your next targets for a mobility drillsuggest(input) in the sandbox
muscle-group-insightSays what your training data implies about a muscle group’s volumeanalyze(input) in the sandbox
analyticsCustom charts/metrics for an exercisecompute(input) in the sandbox
nutrition-algorithmTurns your goal + data into a calorie targetcomputeTargets(input) in the sandbox
nutrition-analyticsWeekly recaps, adherence, custom insightscompute(input) in the sandbox
widgetA home-screen cardcompute(input) => WidgetView in the sandbox

How it works

A plugin is a manifest plus one artifact — a bundle.js for code plugins, or an exercises.json for packs. You publish both to a registry (a static JSON file), or hand someone the manifest directly.

On install the app fetches the artifact once, checks its SHA-256 against the manifest, and stores it locally. From then on it runs entirely offline. Code is only ever executed inside a QuickJS-WASM sandbox — a bare JavaScript environment with no DOM, no fetch, no storage, no timers.

What you need

  • Node + esbuild to build a bundle (one file, no imports).
  • The types from @logit/core for editor help — @logit/core/domain/progression, @logit/core/plugins/widgetView, etc.
  • Nothing else. There’s no SDK to install and no build server.

Start with the family you want: exercise packs · mobility packs · progression · mobility progression · muscle group insight · nutrition · widgets