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>
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>
- 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>