Skip to content

MINT data model

MINT is organized around one central object: the experiment. Projects group experiments, users and roles decide who can see or edit them, and plugins attach design data, analysis results, and plugin-owned tables around them.

This page is the conceptual database map before you install or write plugins.

Core entities

EntityWhat it representsOwned by
ProjectA lab project, study, collaboration, or dataset containerPlatform
ExperimentOne unit of scientific work with a type-scoped code, type, status, design data, results, and artifactsPlatform + plugins
Experiment typeA slug plus display metadata selected when creating an experimentPlatform; usually paired with a design or full plugin
UserA person or service accountPlatform
RolePlatform permissions such as viewing projects, managing users, or installing pluginsPlatform
Project memberA user's role inside one projectPlatform
Plugin roleA plugin-specific role string such as viewer, editor, or adminPlugin + platform
Plugin tablePlugin-owned relational tables for domain-specific dataPlugin

Experiment shape

An experiment combines platform fields with plugin-defined fields:

Field groupExamplesNotes
Identityid, experiment_code, nameexperiment_code is generated from type + sequence, e.g. LCM-EXP-001
Classificationexperiment_type, status, project linkStatus is planned, ongoing, completed, or cancelled
Ownershipcreator, collaborators, project membersAccess is resolved from platform RBAC and project membership
Design datasample layout, plate map, run sequence, treatment planOne JSON payload written by an EXPERIMENT_DESIGN or FULL plugin
Analysis resultsrun outputs, summaries, result metadataJSON entries keyed by plugin ID, written by ANALYSIS or FULL plugins
Artifactsuploaded files, generated reports, exported tablesUsually plugin-produced or plugin-consumed

Think of the platform experiment row as the stable spine. Plugins should store highly structured or query-heavy data in their own tables, then write compact design/result summaries back onto the experiment so the MINT UI can show status and launch follow-up workflows. SDK reads of analysis results default to the calling plugin's own entry; reader plugins opt into cross-plugin aggregation explicitly.

How plugins attach data

Plugin typeCan read experimentsCan write design dataCan write analysis resultsTypical use
STATICYesNoNoReference viewers and calculators
ANALYSISYesNoYesPeak picking, model fitting, report generation
EXPERIMENT_DESIGNYesYesNoPlate maps, acquisition sequences, treatment layouts
FULLYesYesYesEnd-to-end workflows that own design and analysis

The plugin type is declared in PluginMetadata.plugin_type. The platform enforces write boundaries through PlatformContext, so an analysis plugin cannot accidentally overwrite design data.

Storage layers

LayerWhat lives there
Platform databaseUsers, roles, projects, experiments, experiment types, plugin role assignments, plugin migration records
server.dataPathSQLite/local files when used, passkeys, marketplace cache, uploaded .mint bundles, plugin install snapshots
Plugin schema or tablesDomain-specific relational data created by plugin migrations
Experiment JSON fieldsdesign_data and analysis_results stored on the experiment row so other workflows can read them

For production, use PostgreSQL. SQLite mode is useful for single-server evaluation installs, but plugin roles, shared plugin tables, and multi-user operations are designed around database-backed deployments. database.mode: "none" only keeps file-backed setup/auth basics alive; experiments and projects require SQLite or PostgreSQL.

Lifecycle

  1. A user creates a project.
  2. An admin creates or enables an experiment type and installs the plugin(s) that act on it.
  3. A user creates an experiment and chooses that type.
  4. The design plugin writes structured design data.
  5. One or more analysis/full plugins read the experiment and upsert their result entries.
  6. Users review results, export artifacts, or launch follow-up plugin workflows.

Experiments - user workflow around the model → Plugins - how plugins attach to experiments → Plugin Development Guide - build a plugin that reads an experiment and writes results

MINT is open source. Made by the Morscher Lab.