Back to all projects
Aug 4, 2026

Canopy & Clay // Cultivating an Organic E-Commerce Experience

Designing and building a statically exported storefront for a specialty plant boutique. Focused on organic minimalism, AIDA-driven copywriting, and edge-ready client-side cart architecture.

For a local specialty retail brand targeting millennial "plant parents" and local gardening hobbyists, a standard e-commerce grid often feels too sterile. The brief for Canopy & Clay demanded a deeply aesthetic, educational storefront that balanced premium interior design vibes with accessible botanical guidance.

Technically, the project presented a strict architectural constraint: the entire Next.js 16+ application had to be compiled to pure static HTML (output: 'export') for deployment on Cloudflare Pages, eliminating the use of server-side API routes or server actions.

Here is a deep dive into how I bridged the gap between organic design and strict static engineering.

1. Design Direction: Organic Minimalism

The target persona values aesthetics, sustainability, and expert advice. To reflect this, I established a design system rooted in Organic Minimalism.

The color palette avoids stark whites and harsh blacks, utilizing an off-white Alabaster (#FAFAFA) background paired with Deep Earth (#1A1A1A) for text. Accents of Sage and Forest Green establish the botanical connection without overwhelming the photography. For typography, the pairing of Playfair Display (elegant, editorial serif) and Inter (clean, highly legible sans-serif) creates a lifestyle-magazine aesthetic.

https://canopy-clay.com
Canopy & Clay Homepage Hero Section
FIG // The Hero Section: Asymmetrical layout with sweeping rounded corners

To break away from rigid digital boxes, I implemented sweeping asymmetrical border radii (e.g., rounded-bl-[120px]) on primary hero imagery and staggered grid layouts. This visual softening mimics the organic, unpredictable growth patterns of the plants themselves.

2. Content Strategy: The AIDA Framework

Copywriting and layout were strictly aligned with the AIDA framework to guide users from initial discovery to conversion:

  1. Attention (Hero): Hooking the user immediately with striking interior photography and a value proposition centered on "rare, sustainably grown botanicals."
  2. Interest (Categorization): Traditional botanical naming can be intimidating. I restructured the inventory around the user's lifestyle.
  3. Desire (Education): Positioning the brand as an expert through the "Care Journal," proving that buying a plant comes with the knowledge to keep it alive.
  4. Action (Conversion): Clear, highly contrasting CTAs and a compelling newsletter capture in the footer offering a local delivery discount.
Staggered cards showing Shop by Care Level

Guided Discovery via Care Levels

To reduce the anxiety of buying live plants, traditional taxonomic categories were replaced with lifestyle-based filtering: 'Hard to Kill', 'Moderate', and 'Expert'. The asymmetrical, staggered card layout mimics organic plant growth while naturally guiding the user's eye down the page.

3. Engineering: The Static Export Challenge

Building a functional e-commerce site without a traditional Node.js server requires shifting logic to the build step (Static Site Generation) and the client side (React Context).

Dynamic Routing at Build Time

Because the app is deployed to Cloudflare Pages as pure HTML/CSS/JS, standard Next.js dynamic routing (app/shop/[id]/page.tsx) would normally fail. I utilized generateStaticParams to instruct the Next.js compiler to map over our centralized product data and generate a distinct, hardcoded HTML file for every plant in the inventory during the build process.

Client-Side State & Hydration Safety

To handle the shopping cart natively without a database, I engineered a custom CartContext utilizing localStorage.

A common pitfall in static Next.js apps is the "hydration mismatch" error—where the statically generated HTML (which assumes an empty cart) differs from the client-side React tree (which immediately reads saved items from localStorage). To solve this elegantly, the cart state defers rendering until the component has mounted on the client.

4. Editorial Formatting with Tailwind Typography

The "Care Journal" required a rich, editorial reading experience. Rather than writing custom CSS for every possible markdown element, I integrated the @tailwindcss/typography plugin.

By applying a custom .prose-earth modifier, standard HTML elements (like <h2> and <p>) inherit the strict design system rules—automatically applying Playfair Display to headers, perfectly calculating line-heights, and spacing paragraphs to maintain the site's airy, minimalist feel.

Beautifully formatted journal article about plant humidity

Editorial Care Guides

Using Tailwind's typography plugin, the statically generated blog routes automatically parse and style content into beautiful, magazine-like articles. This ensures the educational content feels like a premium lifestyle publication rather than a dry wiki.

100%Statically Exported

Conclusion

Canopy & Clay demonstrates that severe technical constraints—like static-only hosting—do not require a compromise in user experience or aesthetic ambition. By thoughtfully leveraging Next.js build-time generation and modern CSS paradigms, it is entirely possible to deliver an edge-ready, deeply interactive storefront that breathes as well as the plants it sells.