Skip to content

[codex] Rebuild portfolio with Astrofy shell#159

Merged
jbdevprimary merged 9 commits into
mainfrom
codex/astrofy-portfolio
Jun 10, 2026
Merged

[codex] Rebuild portfolio with Astrofy shell#159
jbdevprimary merged 9 commits into
mainfrom
codex/astrofy-portfolio

Conversation

@jbdevprimary

Copy link
Copy Markdown
Contributor

Summary

  • rebuilds the portfolio around an Astrofy-inspired sidebar shell with dedicated Home, Contributor, Outcomes, Projects, Services, CV, Resume, and Writing pages
  • strengthens the content model so the site sells Jon as a senior individual contributor rather than centering one employer story
  • adds confidential current-consulting proof, broader career through-line outcomes, project imagery, and the new headshot avatar
  • keeps the DOCX resume path intact while aligning the HTML resume section order with the recruiter-optimized structure

Validation

  • pnpm run format
  • pnpm run check
  • pnpm run build
  • pnpm test
  • pnpm run test:e2e
  • pnpm run lint
  • browser verification for homepage/mobile/headshot/key pages

Notes

  • Existing non-blocking hints remain: unused scripts/ecosystem-sage.mjs _spawnAgent hint and Biome schema-version info.

jbdevprimary and others added 5 commits June 9, 2026 19:33
… 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>
@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@jbdevprimary, we couldn't start this review because you've reached your PR review rate limit.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2dfa0dbe-9a2e-4094-a4b4-be4f23c6b5fb

📥 Commits

Reviewing files that changed from the base of the PR and between 53444b6 and f4bbf99.

⛔ Files ignored due to path filters (7)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • public/Jon_Bogaty_Resume.docx is excluded by !**/*.docx
  • public/headshot.png is excluded by !**/*.png
  • public/profile.svg is excluded by !**/*.svg
  • public/projects/extended-data-library.svg is excluded by !**/*.svg
  • public/projects/paranoid-passwd.svg is excluded by !**/*.svg
  • public/projects/radioactive-ralph.svg is excluded by !**/*.svg
📒 Files selected for processing (46)
  • .agent-state/decisions.ndjson
  • README.md
  • astro.config.mjs
  • components.json
  • package.json
  • src/App.tsx
  • src/components/BaseHead.astro
  • src/components/BrandIcons.tsx
  • src/components/Header.astro
  • src/components/HeroSection.tsx
  • src/components/HorizontalCard.astro
  • src/components/SideBar.astro
  • src/components/SideBarFooter.astro
  • src/components/SideBarMenu.astro
  • src/components/SiteFooter.tsx
  • src/components/SiteNav.tsx
  • src/components/cv/TimeLine.astro
  • src/components/sections/OpenSource.tsx
  • src/components/ui/badge.tsx
  • src/components/ui/button.tsx
  • src/components/ui/card.tsx
  • src/components/ui/scroll-area.tsx
  • src/components/ui/separator.tsx
  • src/components/ui/tabs.tsx
  • src/config.ts
  • src/content.config.ts
  • src/content/resume.ts
  • src/content/site.ts
  • src/content/writing/_draft.md
  • src/index.css
  • src/layouts/BaseLayout.astro
  • src/layouts/Layout.astro
  • src/lib/utils.ts
  • src/pages/contributor.astro
  • src/pages/cv.astro
  • src/pages/index.astro
  • src/pages/outcomes.astro
  • src/pages/projects.astro
  • src/pages/resume.astro
  • src/pages/rss.xml.ts
  • src/pages/services.astro
  • src/pages/writing/[slug].astro
  • src/pages/writing/index.astro
  • tests/e2e/navigation.spec.ts
  • tests/e2e/resume.spec.ts
  • tsconfig.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/astrofy-portfolio

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@amazon-q-developer amazon-q-developer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.


⚠️ This PR contains more than 30 files. Amazon Q is better at reviewing smaller PRs, and may miss issues in larger changesets.

Comment thread src/components/BaseHead.astro Outdated
@jbdevprimary jbdevprimary marked this pull request as ready for review June 10, 2026 01:53

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread src/pages/cv.astro Outdated
Comment thread src/pages/cv.astro Outdated
Comment thread src/pages/cv.astro Outdated
Comment thread src/pages/writing/[slug].astro Outdated
Comment thread src/pages/writing/index.astro Outdated
Comment thread src/components/HorizontalCard.astro Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@jbdevprimary jbdevprimary merged commit 84cbe7a into main Jun 10, 2026
13 checks passed
@jbdevprimary jbdevprimary deleted the codex/astrofy-portfolio branch June 10, 2026 02:06
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