Development guide
This guide is for contributors who need to understand, modify, test, or extend Quantas without breaking its scientific behaviour or its frontend-independent architecture.
Start here
Developer setup — environment, repository orientation, and a safe first contribution.
Architecture and dependency rules — dependency direction and ownership of scientific versus frontend responsibilities.
Anatomy of a scientific module — input/options/result contracts, calculators, reports, plots, persistence, API, and CLI.
Changing numerical and scientific code — discipline for formulas, tolerances, uncertainty, callbacks, and optimization.
Implement changes
Common change recipes — add an option, result field, HDF5 field, plot, parser, public symbol, default, or citation.
Adding a new scientific module — complete procedure for a new scientific module.
External-code interfaces and parsers — parsers and adapters for external scientific codes.
Maintaining the public API — supported facade, capabilities, stability, and promotion rules.
Cross-cutting infrastructure
Events, observers, and progress — observers, persistent events, warnings, and progress.
Native HDF5 persistence and schema evolution — shared HDF5 envelope, payloads, migrations, and round trips.
Rendering and frontend integration — neutral reports/plots, Rich, Matplotlib, and GUI integration.
Citation registry — canonical bibliographic records and generated references.
Testing strategy and workflow — test pyramid, staged runner, regression, and distribution validation.
Documentation workflow — docstrings, manual structure, CLI/API reference, and generated assets.
Packaging and platform validation — wheel/sdist contents, clean installation, and platforms.
Worked case study and final review
Thermoelastic architecture and maintenance — application of the architecture to a staged multi-module scientific workflow.
Change review checklist — scientific, architectural, documentation, testing, and packaging checks before a checkpoint.