DIMS is open source. Adding a tab, an analysis, or a feature doesn't require
a fork of the dashboard shell — a tab is one self-registering file and an
analysis is one Python class, both discovered rather than listed, so adding
either changes no existing file. This page is the map for doing either: the
contracts a tab, an analysis, or a study must satisfy; the APIs available to
code you add; the CLI and how to test a change; and how the pieces fit
together.
how one fix reaches every study, and why a study can be archived
If a study needs a different parameter, it belongs in config.json under
analysis — never in a copied script. Studies keep their data and their
config.json; the code lives here, once, and a study takes a fix by bumping
the version it pins.
packages/dims-core/ the page: config, video, the time bus, the tab registry
packages/dims-tabs/ every tab, one self-registering file each
packages/dims-analysis/ the analyses, a pip package
packages/dims-case/ creating a study and keeping its core honest
packages/dims-case-scaffold/ what a new study starts from
packages/dims-notebooks/ notebooks that check a study's data is sound
apps/builder/ the no-code wizard
tests/reference/ the analyses, checked against known answers