Developer Overview & System Guide
Dev GuideComprehensive technical architecture, tech stack specifications, and Fourthwall storefront implementation.
System Purpose & Objectives
This web application represents the production ecommerce storefront for Rory Skagen Art, engineered on Next.js 15 App Router and integrated with Fourthwall's headless commerce APIs.
The project fulfills two primary operational mandates:
1. High-Performance Omnichannel Storefront: Fast, beautifully rendered fine art catalog supporting responsive layouts, multi-currency switching (USD, EUR, GBP, CAD, AUD), and persistent cart management.
2. Catalog Migration & Sync Engine: Automated ingestion and synchronization pipeline that extracted 137 fine art masterworks from the legacy Supabase/Vercel codebase (jadenblack/roryskagenart.com) and mapped them into Fourthwall's Platform and Storefront data layers.
Core Technology Stack
- Framework: Next.js 15.6 (App Router with Turbopack & ISR)
- Runtime: Node.js 22 LTS
- UI & Styling: Tailwind CSS 3.4 with container queries, clsx, and lucide-react
- E-Commerce Layer: Fourthwall Storefront API (v1) & Fourthwall Platform Open API (v1.0)
- Content & Documentation: Fumadocs Core 16.x & Fumadocs UI
- Media Hosting: Cloudinary CDN & Supabase Storage (public WebP renditions)
- Quality & Testing: TypeScript 5.5, Vitest 4.0, ESLint
Key Features & Capabilities
- 137 Cataloged Artworks: 100% of Rory Skagen's fine art catalog imported with verified high-resolution images, descriptions, dimensions, mediums, and tags.
- Dynamic Collection Routing: Dedicated routes for all signature series (
austin-iconic,monsters-kaiju,pop-surrealism,atomic-sci-fi,launch,all). - Interactive Importer UI (
/import): Visual web dashboard for catalog inspection, connection testing, CSV export, and live API synchronization. - Fumadocs Documentation (
/docs&/docs/dev): Dual-purpose documentation engine serving customer-facing guides and developer runbooks.
Repository File Map
/
āāā app/
ā āāā [currency]/ # Dynamic currency-scoped storefront routes
ā ā āāā page.tsx # Home page with hero, 3-item grid & carousel
ā ā āāā collections/ # Collection filtering routes
ā ā āāā product/ # Product detail page (PDP)
ā ā āāā search/ # Search & sort page
ā āāā api/
ā ā āāā import/fourthwall/ # Importer REST API (GET status, POST sync, CSV)
ā āāā docs/ # Fumadocs public documentation routes
ā ā āāā page.tsx
ā ā āāā dev/ # Fumadocs developer & build documentation
ā āāā import/ # Interactive admin sync dashboard
ā āāā layout.tsx # Root application layout
ā āāā globals.css # Tailwind & Fumadocs global styles
āāā components/
ā āāā cart/ # Cart modal, server actions, cookie storage
ā āāā docs/ # Fumadocs navigation, sidebar & layout
ā āāā grid/ # 3-item grid, tile components
ā āāā layout/ # Storefront Navbar, Footer, Currency selector
āāā lib/
ā āāā fourthwall/
ā ā āāā index.ts # Storefront data layer, mock fallback, cart API
ā ā āāā importer.ts # Sync engine, CSV generator, API client
ā ā āāā reshape.ts # Normalizes Fourthwall DTOs into standard types
ā ā āāā types.ts # TypeScript interfaces for Fourthwall schemas
ā ā āāā rory-artworks-data.json # 137 fine art pieces canonical snapshot
ā āāā docs-content.ts # Fumadocs documentation data source
ā āāā constants.ts # Store constants & cache tags
ā āāā utils.ts # Environment variable sanitization & helpers
āāā scripts/
āāā import-artworks-to-fourthwall.ts # Standalone CLI import tool