A small but complete storefront for a fictional Vermont home-goods workshop: hand-poured candles, woven throws, and small-batch ceramics. Built on the Moonshift starter (Next.js App Router, Drizzle + libsql, Tailwind, shadcn-style components, Better Auth).
/editorial home: hero, featured products, category cards, brand story/productscatalog grid with category filter chips and loading skeletons/products/[slug]product detail: gallery tiles, details, quantity add-to-basket- Basket drawer with quantity edit, remove, and a free-shipping meter (client state via React context, persisted to localStorage)
/checkoutaddress form that writes an order + line items to the database and shows a confirmation with an order number (no payment integration)/appsigned-in order history matched by checkout email (Better Auth)
bun install
bun devThe database bootstraps itself on the first request: lib/db/ensure.ts
creates every table and seeds 13 products across 3 categories into a local
app.db. To reset, delete app.db and reload (or run bun run db:seed).
lib/db/domain.ts- categories, products, orders, order_items tableslib/db/seed-data.ts- the full Hearth & Pine catalog fictionlib/store/- catalog queries, price/shipping rules, product-art tonescomponents/store/- header, footer, basket drawer, product cards, checkout- Product imagery is generated CSS (gradient + grain + serif monogram), so the
template has zero external image dependencies. Swap
ProductArtfor real photos by replacing one component.
All products, people, and places are fictional.