From 696bd6b0589f715bb4e720aae8d97718bec5c6b6 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 20 Jul 2026 18:10:07 +0000 Subject: [PATCH 1/6] Finalize About content and add Certifications section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Santiago supplied verified CV data and confirmations, so most of the About page can move off its "pending" placeholders: - person.role: set the positioning line to a full-stack engineer framing (was a pending draft). Now emits jobTitle in the Person JSON-LD. - experience: populated from the CV (Directa, CEMEX, Moreno Diesel, Arwen), bilingual. period is now localized so "present/presente" renders per locale instead of a single English string. - education: populated (Tecmilenio, CIDEB), also with localized period. - Directa year: 2025 — present per Santiago's confirmation, in both the work list and the case study (was 2024, pending). NOTE: the CV PDF still reads "2024 – Present" for Directa — flag to reconcile. - social.x set to the real handle; add social.credly (public badge wallet). Both feed the JSON-LD sameAs for entity verification. Add a Certifications section to the About page, grouped by issuer (Tecmilenio, AWS, Cisco, IBM) with honors flags and a "verify on Credly" link, driven by a new site.certifications content field. Credential names are kept verbatim from the CV; only section chrome is localized. Still pending: portrait (not urgent per Santiago) and the Directa case-study copy + screenshots. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Taz3j2W4Hhy2naFPCHxviu --- messages/en.json | 3 + messages/es.json | 3 + src/app/[locale]/about/page.tsx | 48 ++++++++++++- src/content/directa.ts | 2 +- src/content/site.ts | 120 +++++++++++++++++++++++++++++--- src/lib/seo.ts | 7 +- 6 files changed, 169 insertions(+), 14 deletions(-) diff --git a/messages/en.json b/messages/en.json index 330979e..d5fb31d 100644 --- a/messages/en.json +++ b/messages/en.json @@ -47,6 +47,9 @@ "directaBody": "Directa is the studio I run. The work shown here is built through it.", "experienceHeading": "Experience", "educationHeading": "Education", + "certificationsHeading": "Certifications", + "honors": "Honors", + "viewOnCredly": "Verify on Credly ↗", "downloadCv": "Download CV" }, "work": { diff --git a/messages/es.json b/messages/es.json index 4e2978a..40ea18a 100644 --- a/messages/es.json +++ b/messages/es.json @@ -47,6 +47,9 @@ "directaBody": "Directa es el estudio que dirijo. El trabajo que se ve aquí pasa por ahí.", "experienceHeading": "Experiencia", "educationHeading": "Educación", + "certificationsHeading": "Certificaciones", + "honors": "Honores", + "viewOnCredly": "Verificar en Credly ↗", "downloadCv": "Descargar CV" }, "work": { diff --git a/src/app/[locale]/about/page.tsx b/src/app/[locale]/about/page.tsx index 6ba45b5..0b403d3 100644 --- a/src/app/[locale]/about/page.tsx +++ b/src/app/[locale]/about/page.tsx @@ -27,6 +27,8 @@ export default async function AboutPage({ params }: { params: Promise<{ locale: const experience = unwrap(site.experience); const education = unwrap(site.education); + const certifications = unwrap(site.certifications); + const credly = unwrap(site.social.credly); const expPending = isPending(site.experience); const eduPending = isPending(site.education); const portrait = unwrap(site.person.portrait); @@ -107,7 +109,7 @@ export default async function AboutPage({ params }: { params: Promise<{ locale: