Explore the Architecture

Architecture Explorer

Scroll to explore

01 / 07

Why Build This?

Three motivations came together: wanting a framework to launch stores quickly without rebuilding the same features each time, curiosity about Remix 3 while it was still in early development, and an interest in exploring hexagonal architecture in a real codebase.

This isn't production-hardened software—it's a genuine exploration of how clean architecture patterns play out when you commit to them across a full application.

02 / 07

Shared E-Commerce Core

Every e-commerce site needs the same fundamentals: products, carts, orders, customers. The framework provides a reusable core so new stores don't start from scratch.

The storefront module handles customer-facing operations—cart management, checkout flow, order history. Services implement business rules like discount application and inventory checks, while a clean API layer keeps route handlers thin.

03 / 07

Swap Anything — Ports & Adapters

The domain layer doesn't know where data comes from. Repository interfaces (ports) define what the domain needs; adapters implement those contracts for different backends.

SQLite for fast local development, PostgreSQL for production, Shopify's API for existing stores—same business logic, different storage. Switching is an environment variable change.

04 / 07

Pluggable Infrastructure

The same adapter pattern extends to infrastructure: email providers, payment processors, image storage. Mailgun or SendGrid, Stripe or a test processor, Cloudinary or local files.

Each implements a common interface. Tests run with in-memory fakes, development uses local services, production connects to real providers. Same code path, different configuration.

05 / 07

Extending Core — CSA Module

A farm subscription service needs carts and checkout, but also seasons, shares, weekly boxes, and member preferences. The CSA module adds these domain concepts while reusing the core storefront.

This tests whether the architecture actually supports extension—can you add a new domain module without modifying the core? Turns out, yes.

06 / 07

Site 1: Fashion Store

The first test: can you spin up a complete store quickly? The fashion site imports core storefront and admin modules, configures its database, and registers routes. A working e-commerce site with minimal app-specific code.

The app folder is mostly configuration. Products, cart, checkout, admin dashboard—all inherited from core modules.

07 / 07

Site 2: Farm Box CSA

The second test: can a site combine multiple modules? The CSA site uses core storefront, core admin, and the CSA extension module together. It also adds app-specific routes for the member dashboard and preference management.

Shared checkout handles payments; CSA-specific pages handle subscriptions. The modules compose without conflict.