[codex] Rebuild portfolio with Astrofy shell#159
Conversation
… components With Work and Skills gone, the only remaining interactivity was the nav scroll-spy and one entrance fade. The React island (and its entire dependency tree) was carrying a dozen lines of behavior. - HeroSection/SiteNav/OpenSource/SiteFooter (.tsx) → Hero/SiteNav/ OpenSourceSection/Footer (.astro), statically rendered from resume.ts - Scroll-spy is a ~15-line inline script; the hero fade is CSS - shadcn Button visuals preserved as plain .btn utility classes; lucide icons inlined as SVGs - Removed: @astrojs/react, react, react-dom, motion, lucide-react, radix-ui, class-variance-authority, clsx, tailwind-merge, shadcn, tw-animate-css, @types/react(-dom) — and src/components/ui/ entirely - tsconfig: drop baseUrl (TS 6 deprecates it; paths-only works on TS 5 too) and the react-jsx setting Also permanently kills the dev-server React-hydration failure class, unblocks dependabot #129 (TS 6 baseUrl error) and #155 (lint failure in the now-deleted ui/tabs.tsx), and cuts build time ~3x (2.3s → 0.7s). Verified: dist contains zero .js files (inline scroll-spy + JSON-LD only); full-page screenshot pixel-equivalent to v1.6.0; 25 unit + 13 e2e green; astro check + tsc 0 errors. Decision: keep Astro, drop React — not the reverse Why: Astro earns its place (static rendering from typed data, JSON-LD, sitemap); React carried 15 lines of scroll-spy Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…r, contact scroll-spy, shadcn remnants, dead CSS - Footer: read __APP_VERSION__/__BUILD_DATE__ in frontmatter (Vite define is not substituted in Astro template expressions) — verified the stamp renders real values in dist - SiteNav: the footer (#contact) never crosses the observer band; a bottom-of-page check activates the Contact anchor - Delete components.json (live shadcn config — 'shadcn add' would have silently reintroduced the React stack) and stale package keywords - Strip dead shadcn-era CSS: chart/sidebar tokens, radius-xl..4xl, card/popover-foreground aliases, scroll-fade-x Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… RSS Ports the one genuinely valuable piece of the astrofy template (reviewed at ~/src/reference-codebases/astrofy) into our design system: content- collection blog scaffolding. The template itself was not adopted — its DaisyUI sidebar look is the clone-army aesthetic this redesign exists to escape, and it would regress the stack (Astro 4, Tailwind 3, React-era patterns). - src/content/writing/*.md → /writing/ index + /writing/<slug>/ pages, styled in the site's voice (serif titles, mono dates, minimal prose CSS) - /rss.xml via @astrojs/rss - The Writing nav link surfaces only once a first non-draft post exists — an empty 'blog coming soon' is the anti-signal the portfolio research flagged; publishing a markdown file lights it up automatically - WritingEntry type inferred from our zod schema directly — Astro's generated InferEntrySchema resolves to any under this tsconfig (typegen quirk); call sites annotate explicitly - tsconfig: include .astro/types.d.ts (required for astro:content types) Decision: port astrofy's blog architecture, reject the template wholesale Why: its value is the collections scaffolding; its visual identity is the template look the site just escaped Resolves: 'writing presence' gap (research) + astrofy review directive Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…slug] route, astro sync in check script Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 50 minutes and 23 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (7)
📒 Files selected for processing (46)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Review Summary
This portfolio rebuild represents a significant architectural shift to an Astrofy-based structure with comprehensive content updates. The PR successfully migrates from React to MDX, strengthens the content model to highlight senior IC positioning, and adds dedicated pages for Home, Contributor, Outcomes, Projects, Services, CV, Resume, and Writing.
Key Observations
Architecture & Structure: The transition from React to Astro/MDX with the new sidebar shell is clean. The typed resume data model in src/content/resume.ts serves as a single source of truth for both the site and DOCX generation, which is a solid design choice.
Validation Status: All mentioned validation steps pass (format, check, build, test, e2e, lint), indicating the code is functionally sound.
Security Finding: One security concern identified with email exposure in JSON-LD structured data (see inline comment). Consider removing or obfuscating the email field to reduce spam/scraping risk.
Content Quality: The resume content updates strengthen the career narrative with specific metrics (~70% AWS cost reduction, 15 years experience) and confidential consulting proof. The positioning shifts from employer-centric to broader career through-line.
The mergeable_state shows "dirty" which needs resolution, but the code changes themselves appear solid aside from the email exposure concern.
You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.
There was a problem hiding this comment.
Code Review
This pull request transitions the portfolio site from a React-island architecture to a zero-JavaScript site using pure Astro components, daisyUI, and Tailwind CSS v4. It introduces writing infrastructure (including content collections, an RSS feed, and markdown post pages) and a new sidebar-based layout with dedicated pages for outcomes, services, projects, and a CV. Feedback on these changes identifies several issues: mismatched and missing section IDs in cv.astro that break anchor link navigation, inconsistent date formatting in the writing pages due to a missing timeZone option in toLocaleDateString, and a potential reverse tabnabbing vulnerability in HorizontalCard.astro from using target='_blank' without rel='noopener noreferrer'.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
Resume DOCX has been automatically regenerated from updated source files. |
Summary
Validation
Notes