Commit Graph

7 Commits

Author SHA1 Message Date
Jeff Emmett 6a0ebc2d29 Consolidate header, add subscribe page, fix blog images, compress footer
- Merge two-bar header into single nav bar: remove social icons top bar,
  move search + cart icons next to hamburger menu
- Add /subscribe page with email signup form
- Fix blog images by restoring Squarespace CDN in next.config remotePatterns
- Compress footer into 4-column link layout, remove logo block
- Update Cynthia Trenshaw Poetry link to cynthiatrenshaw.com
- Add local images for homepage, about, IYOS, and artwork pages
- Add /wisdom-words page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 00:13:36 +00:00
Jeff Emmett 09567cedad Fix store images: remove search restriction from localPatterns
The `search: ''` setting in localPatterns was blocking image URLs
that include query parameters (width, quality, format). Removing
this restriction allows the /api/assets proxy URLs to pass through
Next.js image optimization.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 13:41:46 -07:00
Jeff Emmett 2523a304cf Add localPatterns for /api/assets and writable cache dir
- Configure images.localPatterns to allow /api/assets/** with query strings
- Add /app/.next/cache as tmpfs for image optimization cache (read-only container)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 13:12:46 -07:00
Jeff Emmett 5f0d2eff16 Use API route proxy for Directus assets instead of direct internal URL
Next.js image optimizer blocks internal Docker URLs due to SSRF
protection (private IP resolution). Instead, proxy assets through
/api/assets/[id] which fetches from internal Directus URL server-side.

This bypasses both Cloudflare Access and SSRF protection since the
<Image> src is a same-origin path, not an external URL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 13:11:13 -07:00
Jeff Emmett 41d784e92d Fix store images: bypass Cloudflare Access via internal Docker URL
Directus CMS is behind Cloudflare Access, which blocks the Next.js
image optimizer from fetching assets. Route image requests through the
internal Docker network (http://katheryn-cms:8055) instead.

- Add NEXT_PUBLIC_DIRECTUS_ASSET_URL/TOKEN env vars for client components
- Use DIRECTUS_INTERNAL_URL for server-side Directus API calls
- Convert store detail page from client to server component (data
  fetching now happens server-side, not in browser)
- Add internal Docker hostname to Next.js remotePatterns

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 13:03:04 -07:00
Jeff Emmett 80497fd4ed Update homepage with full-screen hero from Squarespace
- Add full-screen portrait hero with testimonial quote overlay
- Add social icons on hero section
- Add scroll indicator animation
- Add YouTube video background for In Your Own Skin section
- Add book section with Amazon embed
- Add Amazon images domain to Next.js config

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 01:59:11 +00:00
Jeff Emmett 1d0dfc342e feat: Add blog system with 72 posts from Squarespace export
- Parse Squarespace WordPress XML export and extract all blog posts
- Create blog listing page with posts grouped by year
- Create individual blog post pages with full content
- Add social sharing, prev/next navigation, related posts
- Configure Next.js for Squarespace CDN images
- Add Tailwind typography plugin for prose styling
- Include 357 artwork thumbnails from Airtable

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 01:23:12 +00:00