Application Overview
PortCalls — Coastal Voyage, Cargo & Port-Call Management. 38 models covering the operational execution of an Australian coastal shipping service, from the commercial commitment through to the reconciled, evidenced voyage.
The core operating chain
The whole app hangs off one spine. Read it top to bottom:
ServiceContract → Voyage (over a Route, with a Vessel and Master)
Voyage → VoyageLeg / VoyageParty the plan and who is on it
Voyage → CargoBooking → CargoConsignment → CargoTransportUnit
CargoConsignment → DangerousGoodsDeclaration
CargoBooking → CargoDocument / CargoReadiness
Voyage → StowagePlan → StowagePosition
Voyage → CargoSecuringInspection
Voyage → PortCall (at a Port / Terminal / Berth)
PortCall → PortCallDeclaration / PortServiceRequest
PortCall → BerthWindow / PortCallMilestone
PortCall → LoadingOperation → LoadingTally
PortCall → StatementOfFacts
Voyage → VoyageReadiness / VoyagePosition
Voyage → OperationalEvent → Delay
Voyage → VoyagePerformance reconciliation and review
The point of the model is traceability across streams: a departed voyage is traceable through cargo readiness, berth readiness, vessel readiness and voyage authority, and a failure in any one stream changes the voyage-readiness result, names the responsible party, records evidence and moves the forecast departure and arrival.
The nine areas (they mirror the sidebar)
- Commercial — the
ServiceContract(charter type, scope, performance and demurrage terms), theVoyagethat executes it, and theVoyagePartyrecords that attach owner, operator, charterer, shipper, consignee, agent, terminal and stevedore to it. - Fleet & Routes —
Vesseland its statutoryVesselCertificates,Ports with their authorities,Terminals andBerths (with LOA, draft and crane limits), and theRoutes joining ports with nominal distance and transit. - Cargo — the
Commoditycatalogue, theCargoBookingagainst a voyage, theCargoConsignments and theirCargoTransportUnits, theDangerousGoodsDeclaration, theCargoDocuments, and theCargoReadinessassessment that gates loading. - Stowage & Handling — the versioned
StowagePlanwith its stability and segregation checks, theStowagePositions within it, theCargoSecuringInspections, and theCargoHandlingEquipmentwith safe working loads and inspection dates. - Port Calls — the
PortCallwith ETA/ATA/ETD/ATD and berth, itsPortCallDeclarations, the requestedPortServiceRequests, theBerthWindowallocations and thePortCallMilestonetimeline. - Cargo Operations — the
LoadingOperation, theLoadingTallyrecords that build up the actual figure unit by unit, and theStatementOfFacts. - Voyage Execution — the
VoyageLegactuals, theVoyageReadinessgate, theVoyagePositionreports, theOperationalEvents and theDelays they cause. - Performance & Records — the
VoyagePerformancereconciliation, theEvidenceregister and the operationalNotifications. - Administration — the
Organisations and thePersons who act for them.
Key concepts and boundaries the app models
- Readiness is a gate, not a status flag.
CargoReadinessandVoyageReadinessare point-in-time assessments with a boolean per stream and an overall result (READY/READY_WITH_CONDITIONS/NOT_READY). A voyage reachesREADYonly when every readiness flag is true. Assessments accumulate — aNOT_READYand a laterREADYboth stay on the record. - Verified gross mass (VGM) rides on the transport unit. A container
CargoTransportUnitcarries itsverified_gross_mass, method, verifier and timestamp — the check that lets it be loaded. - The stowage plan is versioned, not overwritten. When cargo changes, the
plan is superseded (
SUPERSEDED) and a new version approved (IN_USE); the positions and securing inspections point at the version in force. - Delay attaches to an event and names a party. A
Delaylinks to theOperationalEventthat caused it, records its category, theresponsible_party_organisation, whether it isexcusableand whetherdemurrage_applicable— the commercial hook. - Performance is derived and reconciled.
VoyagePerformanceholds planned vs actual distance and transit, port and delay hours, capacity utilisation, cargo tonne-nm and schedule variance. In this prototype those derived figures are computed in the seed, not by a live rules engine.
What is Phase 2 (documented, not enforced)
The proforma pack shipped state machines (workflows.yaml), assertions and
derivations (business_rules.yaml), dashboard/report definitions and integration
adapters. These are process documentation recorded in the DSL header and in
app_config.yaml business_rules: {}. The demo data is consistent with them
rather than validated against them — nothing in the running app enforces the
VGM, DG-segregation, berth-fit, readiness-gate or derived-quantity rules yet.
What this app is not
It is the operational layer. It references, rather than duplicates, the
coastal-trading licence and voyage-notification system, the vessel
safety-management and crewing systems, navigation/ECDIS, the terminal operating
systems, financial/charter-party accounting and demurrage settlement, and
customs/international cargo reporting. The *_reference / *_uri columns and the
Evidence model carry the handles to those source systems. It is a prototype data
and workflow model, not legal advice — requirements must be verified for each
vessel, cargo, port, terminal, route and operating arrangement.