- Added portfolio pages: portfolio-index, portfolio-about, portfolio-contact
- Added work/[slug].astro for project detail pages
- Added PortfolioBase.astro layout with Playfair Display font
- Added ProjectCard.astro component
- Added projects collection with taxonomies (category, tag)
- Updated theme.css with --font-serif variable
- Added portfolio seed data with 4 projects
- Updated menus to include Work link
The error "Cannot read properties of undefined (reading 'map')"
indicates some block fields are undefined. Added optional chaining
(?.) to all nested .map() calls for features, testimonials,
plans, and items arrays.
Also renamed prop from 'value' to 'blocks' and added check
for pageContent.length > 0.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Official template uses: <EmDashHead page={pageCtx} />
Not: <EmDashHead emdash={...} pageContext={...} />
Also removed Font component from imports (causes esbuild parse error)
and uses Google Fonts link tag instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Font component with spread syntax caused esbuild parse error
at Base.astro line 64. Replaced with direct Google Fonts link tag.
Also removed fonts[] array from astro.config.mjs since we're
loading Inter via <link> tag instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Marketing landing page with hero, features, testimonials, FAQ, pricing
- EmDash CMS with pages collection and marketing blocks
- Full seed data with all content sections
- Dockerfile with entrypoint for database persistence
- Responsive design with CSS variables
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>