← All implementations
HOMEGROWN / SUBSCRIPTIONSLive · launch interest

Arid Farm

Good greens. A rhythm that fits.

Arid Farm’s produce selection cards and package summary with four butterhead lettuces.
The package builder brings produce, quantities, shipping, and delivery rhythm into one view.

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.

The problem

A flexible subscription still needs dependable operations. Customer choices have to become stable delivery dates, enforceable cutoffs, and useful harvest and packing information.

The implementation

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.

  • Custom bundles with weekly, two-week, or four-week rhythms
  • Launch-interest capture that preserves the desired bundle
  • Delivery planning, harvest aggregation, and packing workflows
01Build a produce bundle02Choose a cadence03Plan delivery dates04Pack against commitments
02 / ENGINEERING DECISIONS

Where the details matter.

01

Dates stay anchored

Cadence calculates occurrences from the original schedule anchor. Skips and pauses remain explicit customer decisions rather than silently moving future dates.

02

A cutoff is a domain rule

Customers can change an upcoming delivery only while its cutoff is open. The same rule belongs in server logic and in the interface.

03

Separate the editable bundle from its commitment

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.

03 / PACKAGES & CODE

Inside the implementation.

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.

APPLICATION EXCERPT

Delivery cutoff

Cutoff is elapsed hours before local delivery date.

Cadence package ↗
app/Services/FarmPlanner.phpPHP
public function canChange(CarbonImmutable $date, ?FarmSetting $settings = null): bool
{
    $settings ??= FarmSetting::current();

    return Cutoff::isOpen($date->startOfDay(), $settings->cutoff_hours, CarbonImmutable::now());
}
Source excerpt · 096d521 · lines 30–35. Surrounding setup is omitted.
APPLICATION EXCERPT

Deployment checks

Deployment tooling use, not request-time business logic.

Preflight package ↗
scripts/vapor-preflight.phpPHP
$sharedChecks = (new Runner)->run([new VaporManifest($manifest)]);
foreach ($sharedChecks as $result) {
    $assert($result->status !== 'fail', $result->name.': '.$result->message);
}
Source excerpt · 096d521 · lines 18–21. Surrounding setup is omitted.
APPLICATION EXCERPT

Use a page-memory basket for the produce builder

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 ↗
public/assets/package-selection.mjsJavaScript
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)) })),
});
Source excerpt · 7d69a99 · lines 10–20. The preceding setup defines capacities, memory and the application’s quantity bounds.
APPLICATION EXCERPT

One shared attribution component

The site keeps its own copyright. SiteCredit adds the standard BWD attribution after it, using isolated styles bundled with the application.

SiteCredit package ↗
resources/views/layout.blade.phpBlade
<x-site-credit />
Actual component call. The shared stylesheet is included separately in the application build.
04 / VERIFICATION & CURRENT SCOPE

What holds it together.

  • Cadence supplies recurring-date and cutoff behavior.
  • Preflight checks deployment configuration before release.
  • The public journey currently records launch interest, not a paid subscription.
  • Builder tests cover quantity bounds, separate browser state and hydration from the existing server-rendered draft.
CURRENT RELEASE

The public site currently collects launch interest. Ordering and payments are not open yet.

KEEP EXPLORING

MrLaravel

Designed, Developed and Hosted by Better Web Design and Development Services, LLC