From 8439aa3c8f758b691ea4fd7bd1bdbc8dfb0e5fde Mon Sep 17 00:00:00 2001 From: Zul Date: Fri, 9 Oct 2026 00:29:25 +0800 Subject: [PATCH 1/5] Refactor main portfolio into cozy trans-femme exploration experience --- client/src/App.jsx | 356 ++++++++++++++++++++++++++++----------------- 1 file changed, 223 insertions(+), 133 deletions(-) diff --git a/client/src/App.jsx b/client/src/App.jsx index 490a9d3..9140327 100644 --- a/client/src/App.jsx +++ b/client/src/App.jsx @@ -55,6 +55,33 @@ const months = (start, end) => { ); }; +function cozyProjectBadges(item) { + const haystack = [ + item?.title, + item?.category, + item?.description, + ...(Array.isArray(item?.skills) ? item.skills : []), + ...(Array.isArray(item?.tags) ? item.tags : []), + ] + .filter(Boolean) + .join(' ') + .toLowerCase(); + + const badges = []; + + if (/python/.test(haystack)) badges.push('🐍 python princess'); + if (/vapt|pentest|penetration|vulnerab/.test(haystack)) badges.push('πŸ›‘οΈ vapt automation'); + if (/dfir|forensic|incident/.test(haystack)) badges.push('πŸ”Ž dfir detective'); + if (/threat|cti|intelligence/.test(haystack)) badges.push('πŸ“‘ cti signal scout'); + if (/linux/.test(haystack)) badges.push('🐧 linux wizard'); + if (/automation/.test(haystack)) badges.push('✨ cozy automation'); + if (/software|development|indie/.test(haystack)) badges.push('🧸 indie dev'); + + if (!badges.length) badges.push('🌸 curious build'); + + return badges.slice(0, 3); +} + /* ========================================================= CONTENT NORMALIZATION Keeps the client safe when the CMS/API has optional fields. @@ -4768,6 +4795,17 @@ export default function App({ initialContent = null }) { ? window.location : { pathname: '', hash: '', search: '' }; + const hiringQuery = + typeof URLSearchParams !== 'undefined' + ? new URLSearchParams( + currentLocation.search || '' + ) + : null; + + const isMentorHiring = + hiringQuery?.get('hiring') === + 'system_security_mentor'; + const pathnameWithoutBase = currentLocation.pathname.startsWith(BASE_PATH) ? '/' + currentLocation.pathname.slice(BASE_PATH.length).replace(/^\/+/, '') @@ -5148,142 +5186,95 @@ export default function App({ initialContent = null }) { return ( <> {/* =================================================== - NAVIGATION + COZY EXPLORATION DOCK =================================================== */} -