Niamoto core concepts¶
Niamoto runs one pipeline through three config files:
import.yml -> load raw data
transform.yml -> compute grouped outputs
export.yml -> render pages or APIs
The desktop app edits the same project files as the CLI. The interface changes. The project model does not.
1. Project layout¶
When you run niamoto init, Niamoto creates this tree:
config/
imports/
exports/
plugins/
templates/
db/
logs/
config.yml points to the database, output directories, templates, and plugins.
2. Import¶
import.yml defines the raw entities that enter the project database.
You usually split them into:
datasetsfor observations, measurements, and other raw rowsreferencesfor taxonomy, plots, shapes, or classification tables
For each entity, you tell Niamoto:
where the source lives
which fields to load
how datasets link to references
That import step gives the rest of the pipeline a stable project database.
3. Transform¶
transform.yml is a list of groups. Each group picks one group_by entity and
computes outputs for that entity in widgets_data.
group_bysays which entity owns the output rowssourcesdefine the extra data each group can readwidgets_dataruns transformer plugins and stores their results
Those results become the inputs for HTML widgets, JSON exports, previews, and other tooling.
4. Export¶
export.yml defines an exports: list. Each target picks one exporter.
The two common cases are:
html_page_exporterfor a static websitejson_api_exporterfor API files
An HTML target usually contains:
paramsfor site settings, template paths, navigation, and assetsoptional
static_pagesgroupsfor detail pages and index pages
Each groups[*].widgets entry points at a data_source that came from
transform.yml.
5. Plugins¶
Plugins extend each stage of the pipeline.
Niamoto registers five families:
loaders
transformers
widgets
exporters
deployers
Use built-in plugins first. Write your own plugin when the stock ones stop short.
6. Templates and widgets¶
Templates control page layout. Put overrides in templates/.
Widgets do a different job. A widget plugin reads transformed data and returns
HTML for one block inside a page. You configure the widget in export.yml with:
plugindata_sourcetitledescriptionparamslayout
If you want to change page structure, edit templates. If you want a new data block, edit widgets.
7. Desktop app and CLI¶
The desktop app and the CLI touch the same project.
Use the desktop app when you want:
import assistance
previews
page composition
guided deploy setup
Use the CLI when you want:
repeatable runs
CI or cron jobs
scripted deploys
versioned config changes
You can switch between them at any point.
8. A normal project loop¶
Most projects follow this loop:
Copy raw files into
imports/.Fill
import.yml.Run
niamoto import.Fill
transform.yml.Run
niamoto transform.Fill
export.yml.Run
niamoto export.Publish with
niamoto deploywhen the site looks right.
For repeated runs, many teams use niamoto run --no-reset.
Next reads¶
quickstart.md for the shell workflow
../03-cli-automation/README.md for command patterns and deployment
../06-reference/configuration-guide.md for schema details
../04-plugin-development/README.md for custom plugins