Dates stay anchored
Cadence calculates occurrences from the original schedule anchor. Skips and pauses remain explicit customer decisions rather than silently moving future dates.
Good greens. A rhythm that fits.
Arid Farm connects the farm to the kitchen: choose produce, choose a delivery rhythm, and give the grower a clear picture of what needs to be harvested and packed.
A flexible subscription still needs dependable operations. Customer choices have to become stable delivery dates, enforceable cutoffs, and useful harvest and packing information.
The application keeps prices and committed orders explicit, with tools for skips, pauses, packing, and shipment tracking. The shared Cadence package handles anchored dates and cutoff calculations.
Cadence calculates occurrences from the original schedule anchor. Skips and pauses remain explicit customer decisions rather than silently moving future dates.
Customers can change an upcoming delivery only while its cutoff is open. The same rule belongs in server logic and in the interface.
Stow handles the quantities being edited on the page. The server validates and prices the selection before preserving the requested bundle; delivery records and payment activation remain farm-owned rules.
Stow 2.1 manages editable produce quantities in the browser through a page-memory adapter. The application owns session handoff, reviewed bundle snapshots and fresh FarmPlanner pricing. Cadence handles delivery recurrence and cutoffs; Preflight supplies shared release checks.
Cutoff is elapsed hours before local delivery date.
Cadence package ↗public function canChange(CarbonImmutable $date, ?FarmSetting $settings = null): bool
{
$settings ??= FarmSetting::current();
return Cutoff::isOpen($date->startOfDay(), $settings->cutoff_hours, CarbonImmutable::now());
}Deployment tooling use, not request-time business logic.
Preflight package ↗$sharedChecks = (new Runner)->run([new VaporManifest($manifest)]);
foreach ($sharedChecks as $result) {
$assert($result->status !== 'fail', $result->name.': '.$result->message);
}The app passes product capacities and the server-rendered draft into a Stow basket. Its storage adapter uses a page-local Map; session handoff, fresh prices and reviewed bundle snapshots stay on the server.
Stow package ↗const basket = createBrowserBasket({
storageKey: 'arid.package-selection.v1',
allowedIds: [...capacities.keys()],
maxItems: Math.max(1, capacities.size),
maxQuantity: 50,
storage: () => ({
getItem: (key) => memory.get(key) ?? null,
setItem: (key, value) => memory.set(key, value),
}),
migrate: () => Object.entries(initialItems).map(([id, quantity]) => ({ id, quantity: bounded(id, Number(quantity)) })),
});The site keeps its own copyright. SiteCredit adds the standard BWD attribution after it, using isolated styles bundled with the application.
SiteCredit package ↗<x-site-credit />The public site currently collects launch interest. Ordering and payments are not open yet.
Designed, Developed and Hosted by Better Web Design and Development Services, LLC