Commit Graph

3 Commits

Author SHA1 Message Date
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 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