Hotel Booking Free owns public contracts, canonical view models, routes, availability, base pricing, tax, booking validation, booking snapshots and shared payment dispatch. Pro owns optional commercial runtime such as advanced pricing and tax, online payments, customer and OTA features, Room Policies, reviews and additional services. Aurelia owns presentation, assets, responsive behavior and theme metadata. The update service owns release transport, authorization, rollout and revocation.
Decide where code belongs
- Put a new availability, price, tax, payment, booking, policy, license or data rule in its owning plugin, never in a theme.
- Put normalized presentation data in a Free public contract when both Free and Pro themes need it. Keep commercial implementation and schema in Pro.
- Let a theme consume booleans, view models, language items and hooks without inspecting Pro classes, entitlements or private tables.
- Keep iCal and Booking.com/Agoda API behavior in Pro; they are separate Advanced Integration surfaces.
- Pro absence must be safe: optional sections return empty and Free journeys remain complete.
If the required data is not public, propose a versioned contract and pair regression rather than depending on an internal service. A contract change is its own approved phase and must preserve the Free/Pro compatibility matrix.