feat(web): bespoke per-project portfolio logos + single-source listing#216
Conversation
Add a cohesive set of 14 brand SVG logos (one per project — each a rounded gradient tile with a white glyph in the project's brand color) under public/logos and wire them through PORTFOLIO_PROJECTS.image. The starfield suns, project-detail heroes and listing cards now all render the same bespoke mark. Replaces the ad-hoc /themes icons and the Nexamesh -> rooivalk placeholder; fills the four projects that had no logo (Sluice, Docket, ConvoLens, OmniPost). Consolidate the /portfolio listing onto the single source of truth: the duplicate inline `projects` array in features/portfolio is removed; the listing now derives from PORTFOLIO_PROJECTS (filtered by a new `listed` flag, links derived from the single `product` field, subtitle from a new `tagline`). This kills the dual-array drift that previously broke the listing -> detail link on the Rooivalk rebrand. The lucide fallback icon map is extracted to a shared projectIcons module consumed by both the listing and the detail page. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughAdds optional ChangesPortfolio logo images, taglines, and icon refactor
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 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 |
features/genai-projects (a GenAIProjects component + its CSS module) is exported but imported and routed nowhere — it never renders. It also carried a third stale copy of the portfolio data with pre-rebrand Rooivalk URLs (phoenixrooivalk.com, github.com/JustAGhosT/PhoenixRooivalk), the same drift class just consolidated away in #216. The canonical listing lives in features/portfolio backed by PORTFOLIO_PROJECTS. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Portfolio logo pass + single-source consolidation
Investor-facing — please review before merging; not auto-merged.
1. Bespoke per-project logos (14)
A cohesive set under
apps/web/public/logos/<id>.svg. Each is a self-contained rounded gradient tile + white glyph in the project's brand colour, so the same mark renders correctly in all three contexts — the starfield "sun" (circular-clipped), the project-detail hero, and the listing card. The detail/related/listing tiles use the existingimage ? transparentpattern so the SVG provides its own background (no double-tile)./themes/*-icon.svgset.rooivalk-icon.svg).2. Kills the dual-array drift
The
/portfoliolisting had its own inlineprojectsarray, separate fromPORTFOLIO_PROJECTS(the source the starfield + detail page use). They drifted — that's what broke the listing→detail link on the Rooivalk→Nexamesh rebrand. Now:PORTFOLIO_PROJECTS; the inline array is gone.projectIcons.tsxused by both the listing and the detail page.Consolidation decisions to sanity-check
listedflag (new):phoenixvc-websiteanddesign-systemare markedlisted: false, so the public listing still shows the same 12 projects as before (these two internal infra items remain on the starfield only).productfield (GitHub vs. website), exactly like the detail page. Effect: projects that previously had both a website and a GitHub button on the listing now show one, matching the detail page — VeritasVault → website; CodeFlow → thecodeflow-engineGitHub (the old listing'sautopr.io/autopr-enginelinks were stale).tagline(ported verbatim from the old listing descriptions); paragraph from the existingbio.Verification
vite buildgreen; rooteslintclean (0 errors)./portfolio(renders "12 of 12"),/portfolio/sluice,/portfolio/nexamesh— logos render in cards + heroes, links correct.Summary by CodeRabbit
New Features
Style