Domain modules
Loop is composed of modules that are built on top of one another. These are also called "domain modules" or "domains". Each module supports functionality related to a particular business domain.
The lower-level modules are the foundation of the system. They tend to be simpler and make fewer assumptions about business rules, allowing them to be reused for a variety of use cases. The higher-level modules build upon the concepts in the lower-level modules. They support complex business processes related to logistics, payments, and accounting.
Lines represent dependencies, not the flow of data.
The diagram above shows key modules and how they relate to one another. Higher-level level modules are at the top of the diagram, and lower-level modules are at the bottom. A line indicates that the higher-level module is built on top of (or "depends on") the lower-level module. Within each of these modules, there are internal submodules built on top of one other in a similar fashion. Thinking in terms of modules allows developing composable, scalable solutions with Loop.
Modules
Starting from the bottom, let's examine each module.
Platform
The platform module supports flexible enterprise data processing and SaaS functionality. It provides lower-level building blocks that can be configured to support use cases like integrating with carriers APIs and extracting specific key-value pairs from bill of lading PDFs. Concepts in this module include users, artifacts, tenants, tasks, etc.
Network
The network module stores normalized organizations and addresses entities as well as their relationships. These entities are referenced by the normalized shipment and invoice entities in the higher-level modules. Customers, carriers, shippers, brokers, consignees, payors, and payees are all represented as organizations.
Payments
The payments module deals with the movement of money. Concepts in this module include payment, payment account, and payment account holder.
Shipments
The shipments module handles normalized shipment and job data.
Rates
The rates module handles logistics-specific rate contracts and includes a rate engine.
Payables
The payables module corresponds to accounts payable (A/P) and deals with payable invoices, audits, releases for payment, etc.
Receivables
The receivables module corresponds to accounts receivable (A/R) and deals with receivable invoices, generated rates, etc.
Analytics
The analytics module deals with summary statistics and aggregations from all other modules. It has read-only access to everything, supporting dashboards and analytics. Arrows are omitted from the diagram for simplicity. Data can be exported in batch from the analytics module for analysis in external tools.