Skip to content

Add Projects and Talks pages with folder-per-entry content model#1

Merged
yukicoder0509 merged 8 commits into
mainfrom
feat/add-project-talk-page
Jul 5, 2026
Merged

Add Projects and Talks pages with folder-per-entry content model#1
yukicoder0509 merged 8 commits into
mainfrom
feat/add-project-talk-page

Conversation

@yukicoder0509

@yukicoder0509 yukicoder0509 commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Summary

  • Splits Projects out of the Experience page into its own page with detail views, and adds a new Talks page, updating header nav to match
  • Migrates Projects/Talks content to a folder-per-entry model (src/content/{projects,talks}/<slug>/meta.ts + details.md + optional cover image) rendered via react-markdown, so adding an entry is just adding a folder
  • Fixes several header/nav/card UI issues found along the way: header shrinking on tall pages, nav hidden on mobile, whole-card links, and cover images being cropped instead of letterboxed

Test plan

  • npm run build
  • Manually click through Projects and Talks list/detail pages
  • Verify nav on mobile viewport shows all links and wraps correctly
  • Verify cover images (e.g. Traefik talk) render fully without cropping

🤖 Generated with Claude Code

yukicoder0509 and others added 8 commits July 4, 2026 22:54
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Splits the Projects section out of Experience into its own page with
detail views, adds a new Talks page, and updates the header nav and
Experience page (Other Experience section) to match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Previously the whole card was a stretched link, which made most of
the card look inert while only its edges responded to clicks. Scope
the link to the "View details" text instead.

Also ignore the local .playwright-mcp/ output directory.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Header lacked shrink-0, so in the h-screen flex column it would
compress below its intended 80px whenever page content pushed total
height past the viewport, most visibly on the About page.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Per the design handoff, the header was fully hidden below md. Show it
on all viewport sizes with flex-wrap so all 5 links stay reachable on
mobile instead of disappearing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Replace the flat projects.ts/talks.ts arrays with src/content/{projects,talks}/<slug>/
folders (meta.ts + details.md, optional cover image), so adding an entry is
"add a folder" instead of editing a shared array. details.md is rendered
with react-markdown + remark-gfm and supports images co-located in the same
folder, resolved through Vite's asset pipeline via import.meta.glob.

Projects gain the same optional cover-image convention talks already had,
replacing the static "project screenshot" placeholder.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
object-cover was cropping the top/bottom off portrait-oriented cover
images (e.g. the Traefik talk's logo). Switch to object-contain on a
neutral background so the whole image is always visible.

Also fixes a related bug: object-contain + percentage h-full/w-full
inside a flex container using aspect-ratio let the image's own
intrinsic ratio distort the container's computed height. Take the
image out of flow with absolute positioning so it strictly fills the
aspect-ratio box instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@yukicoder0509 yukicoder0509 merged commit d32587b into main Jul 5, 2026
2 checks passed
@yukicoder0509 yukicoder0509 deleted the feat/add-project-talk-page branch July 5, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant