Domain Guide
As we move to a domain-driven model, these are core terms to help you understand the application.
Terms for Users
Ordered logically to build a baseline understanding of the domain.
Package
A file containing a migration definition.
Source
A package for the software we are exporting (leaving).
Target
A package for the software we are importing (moving to).
Origin
A package for pulling raw data into Porter-compatible local storage (e.g. API scraping) so it can be used as a Source.
Storage
A category of data storage, like a database (RDBMS).
Connection
The access credentials and address of a data source OR the active connection to one.
Porter Schema
Nitro Porter's intermediary data structure that sits between a Source and Target, acting as an anti-corruption layer and constraining recombinant complexity of possible migration paths.
Export
Transferring & transforming data from a Source to Porter Schema.
Import
Transferring & transforming data from Porter Schema to a Target.
Input
The read-only data storage/connection for an Export or Import that contains/accesses
the origin data being read (defined by a Source or Porter).
Output
The write-enabled data storage/connection for an Export or Import that contains/accesses
the transformed data being written (defined by Porter or a Target).
Migration
Fulfills a Request to transform & transfer data using an Export, Import, & Postscript (or any subset thereof).
(May also refer to a "database schema migration", an industry term for altering database schema in a reversible way
using coded definitions, done with the library `Phinx` in Nitro Porter's automated tests.)
Domain Diagram

Terms for Package Authors
Schema / Structure
A data structure, like a database table schema (or an entire database), including its constraints
(like types, size, keys, and not-null flags).
Map
Used in Packages to directly rename values between schemas (Source to Porter, or Porter to Target).
Filter
Used in Packages to transform data values (e.g. converting Unix time to a timestamp).
Transformation
Set of instructions for migrating a single schema that consists of data, a map, and (optionally) filters.
Component
An aggregrate representing a core object or feature set. For example, the component "Polls" often has multiple schema migrations (polls, answers, and votes).
Manifest
A sequence of required & potential components for the successful migration of a bounded context (Web app category), like "forum", "CMS", or "CRM".
Terms for Porter Schema
Because every platform uses its own nomenclature, it's important to standardize within Nitro Porter for clarity.
We use terms adopted by Vanilla Forums, the database structure Porter Format is based on.
Bold items are 'core' data that all packages should support if possible.
User data
- Users: Anyone who logs in.
- Roles: Users may be assigned one or more.
- Avatars: User image.
- Badges: User awards.
- Ranks: Hierarchical pseudo-roles, typically automated.
- Bookmarks: Discussions a user has saved for later.
Content
- Discussions: A thread or topic of discussion.
- Comments: Responses in a Discussion.
- Categories: Hierarchy of discussion topics or areas.
- Tags: Non-hierarchical labels for discussions.
- Reactions: Emoji / image-based click-replies.
- Attachments: Files associated with a discussion or comment.
- Polls: Survey question that users may vote on.
- Private Messages: A private conversation separate from discussions, aka "Direct Message (DM)".
- User Wall: Shared content associated with a single user's profile.
- User Notes: Private content associated with a user, usually by an admin.
Terms for Maintainers
Technical terms related to the framework underpinning Nitro Porter.
Assets
Static files for Web presentation, like images and CSS files.
Bundle
Manages a Parser for the library `s9e\TextFormatter`.
Build
A distribution-ready copy of the Porter app created by Phing that omits development files.
Command
A instructions sent via Command Line Interface (CLI) to be converted to a Request.
Config
An entity managing the application configuration, derived from `config.php` (or `config-sample.php`).
The Config may supplement a Command with additional information when building a Request.
Container
A Docker-based virtual machine used by Nitro Porter to isolate services or app installations.
Connection Manager
Manages a data Connection based on the library `Illuminate\Database`.
E2E
"End-To-End", a type of automated testing the covers the entire request lifecycle (input to output).
In most Web apps, this means testing HTML or Javascript-based interactions.
In Nitro Porter, this is executing a full migration request (including CLI output & logging).
ETL
"Extract, Transform, & Load", the sequence of a typical data pipeline.
I believe its connotation is reductive in the context of user-generated content,
but you could think of Porter as "composable ETLs in a tailored trenchcoat" if it's helpful.
Parser
Custom formatting instructions for the library `s9e\TextFormatter`.
Request
A generic set of instructions for any migration (or subset thereof).
Seed
Mock data for an automated test.
UGC
"User-Generated Content" is anything a non-admin user has created, like the content of a post.