From 6bd779605e74f9fbd018484a233ba5f5eab5f73f Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Wed, 16 Sep 2026 21:47:54 +0800 Subject: [PATCH 01/54] feat(experience): add view all link to Experience section --- src/components/sections/experience.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/sections/experience.tsx b/src/components/sections/experience.tsx index 8d585e1..3401895 100644 --- a/src/components/sections/experience.tsx +++ b/src/components/sections/experience.tsx @@ -1,12 +1,16 @@ import { FiExternalLink } from 'react-icons/fi'; import { workExperiences, certificates } from '@/data/experiences'; +import ViewAllLink from '../ui/view-all-link'; import Link from 'next/link'; const Experience = () => { return (
-

Experience

+
+

Experience

+ +
    {workExperiences.map( From 9f139930e7121146af5b87e9edf03d5c5ff78871 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Wed, 16 Sep 2026 22:19:50 +0800 Subject: [PATCH 02/54] feat(certificates): add view all link to Certificate section --- src/components/sections/experience.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/sections/experience.tsx b/src/components/sections/experience.tsx index 3401895..e4d4efb 100644 --- a/src/components/sections/experience.tsx +++ b/src/components/sections/experience.tsx @@ -31,7 +31,10 @@ const Experience = () => {
-

Certificates

+
+

Certificates

+ +
    {certificates.map( From 4aea103f6175f73b80d52f16d43a0839377aaea3 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Wed, 16 Sep 2026 22:34:11 +0800 Subject: [PATCH 03/54] feat(experience): create initial experience page content --- src/app/experience/page.tsx | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/app/experience/page.tsx diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx new file mode 100644 index 0000000..c7a23b8 --- /dev/null +++ b/src/app/experience/page.tsx @@ -0,0 +1,25 @@ +import Breadcrumb from '@/components/sections/breadcrumb'; +import ThemeToggle from '@/components/theme/theme-toggle'; + +export default function ExperiencePage() { + return ( +
    +
    + + +
    + +
    +

    Experience

    +

    + My professional experience as a software engineer. +

    +
    + +

    Add list here.

    +
    + ); +} From d6e3b9588be92d530261017fd8ac1f426c2db46c Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Wed, 16 Sep 2026 22:36:57 +0800 Subject: [PATCH 04/54] feat(certificates): create initial certificates page content --- src/app/certificates/page.tsx | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/app/certificates/page.tsx diff --git a/src/app/certificates/page.tsx b/src/app/certificates/page.tsx new file mode 100644 index 0000000..a66528c --- /dev/null +++ b/src/app/certificates/page.tsx @@ -0,0 +1,25 @@ +import Breadcrumb from '@/components/sections/breadcrumb'; +import ThemeToggle from '@/components/theme/theme-toggle'; + +export default function ExperiencePage() { + return ( +
    +
    + + +
    + +
    +

    Certificates

    +

    + List of all my professional certifications to date. +

    +
    + +

    Add list here.

    +
    + ); +} From 25deb5482dfbdbfbf9f94ff7a78912985e87ee5c Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Thu, 17 Sep 2026 23:30:54 +0800 Subject: [PATCH 05/54] feat(experience): import work experiences to experience page and show initial content --- src/app/experience/page.tsx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx index c7a23b8..2d2382e 100644 --- a/src/app/experience/page.tsx +++ b/src/app/experience/page.tsx @@ -1,5 +1,6 @@ import Breadcrumb from '@/components/sections/breadcrumb'; import ThemeToggle from '@/components/theme/theme-toggle'; +import { workExperiences } from '@/data/experiences'; export default function ExperiencePage() { return ( @@ -19,7 +20,22 @@ export default function ExperiencePage() {
-

Add list here.

+ ); } From 9a65d6a3648d29f44e5068079d0dff6ec7c33f2d Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 18 Sep 2026 20:14:19 +0800 Subject: [PATCH 06/54] fix(ui): normalize flex spacing in experience section of the homepage --- src/components/sections/experience.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/sections/experience.tsx b/src/components/sections/experience.tsx index e4d4efb..3a5c00a 100644 --- a/src/components/sections/experience.tsx +++ b/src/components/sections/experience.tsx @@ -5,8 +5,8 @@ import Link from 'next/link'; const Experience = () => { return ( -
-
+
+

Experience

@@ -30,7 +30,7 @@ const Experience = () => {
-
+

Certificates

From 8cd470b095f06849048f7ff38f33140bae9386ca Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 18 Sep 2026 20:17:42 +0800 Subject: [PATCH 07/54] refactor(experiences): rearrange data and create a WORK_EXPERIENCES variable to contain all my work experiences --- src/data/experiences.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/data/experiences.ts b/src/data/experiences.ts index d30c58a..9b34cb8 100644 --- a/src/data/experiences.ts +++ b/src/data/experiences.ts @@ -1,14 +1,6 @@ import { WorkExperience, Certificate } from '@/types/experience'; -export const workExperiences: WorkExperience[] = [ - { - id: 2, - startDate: 'June 2026', - endDate: 'Present', - position: 'Full Stack Developer', - companyName: 'CALEC', - location: 'New York, USA (Remote)', - }, +export const WORK_EXPERIENCES: WorkExperience[] = [ { id: 1, startDate: 'March 2025', @@ -17,8 +9,19 @@ export const workExperiences: WorkExperience[] = [ companyName: 'Freelance', location: 'Philippines', }, + { + id: 2, + startDate: 'June 2026', + endDate: 'Present', + position: 'Full Stack Developer', + companyName: 'CALEC', + location: 'New York, USA (Remote)', + }, ]; +export const workExperiences: WorkExperience[] = + WORK_EXPERIENCES.slice(-2).reverse(); + export const CERTIFICATES: Certificate[] = [ { id: 1, From b96f8bf24d3e9e6c03d9b56c1dfdaa5d4de2eca5 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 18 Sep 2026 20:24:53 +0800 Subject: [PATCH 08/54] feat(experience): add responsibilities array string property to WorkExperience type --- src/data/experiences.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/data/experiences.ts b/src/data/experiences.ts index 9b34cb8..573b456 100644 --- a/src/data/experiences.ts +++ b/src/data/experiences.ts @@ -8,6 +8,12 @@ export const WORK_EXPERIENCES: WorkExperience[] = [ position: 'Full Stack Developer', companyName: 'Freelance', location: 'Philippines', + responsibilities: [ + 'Managed and reviewed pull requests, approving and merging changes into main and staging branches.', + 'Resolved application issues in Laravel and Livewire by tracing generated markup and debugging.', + 'Improved WCAG accessibility across the Ri2L web application by auditing pages with Axe DevTools.', + 'Established a Laravel development environment with WSL2, Docker, PHP, Composer, Node.js, and Ubuntu.', + ], }, { id: 2, @@ -16,6 +22,12 @@ export const WORK_EXPERIENCES: WorkExperience[] = [ position: 'Full Stack Developer', companyName: 'CALEC', location: 'New York, USA (Remote)', + responsibilities: [ + 'Developed modern Next.js and React applications using JavaScript, TypeScript, and Tailwind CSS.', + 'Implemented client-side routing, state management, and API integration in React-based projects.', + 'Built testing workflows using Vitest, Playwright, React Testing Library, and Mock Service Worker (MSW).', + 'Collaborated on open-source projects using Git, GitHub, pull requests, and code review workflows.', + ], }, ]; From 1765e46a6ecea9b2407c239b8afa6ec2bb6b086f Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 18 Sep 2026 20:25:48 +0800 Subject: [PATCH 09/54] chore(type): update WorkExperience type and add responbilities property --- src/types/experience.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/experience.ts b/src/types/experience.ts index aea23ce..f51691c 100644 --- a/src/types/experience.ts +++ b/src/types/experience.ts @@ -5,6 +5,7 @@ export type WorkExperience = { position: string; companyName: string; location: string; + responsibilities: string[]; }; export type Certificate = { From d9cf41c5349d9c13b8d9aab9a2d1f69f48c6ae96 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 18 Sep 2026 20:26:37 +0800 Subject: [PATCH 10/54] feat(experience): replace workExperiences with WORK_EXPERIENCES data for the experience page and initially show the responsibilities list --- src/app/experience/page.tsx | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx index 2d2382e..16e22cc 100644 --- a/src/app/experience/page.tsx +++ b/src/app/experience/page.tsx @@ -1,6 +1,6 @@ import Breadcrumb from '@/components/sections/breadcrumb'; import ThemeToggle from '@/components/theme/theme-toggle'; -import { workExperiences } from '@/data/experiences'; +import { WORK_EXPERIENCES } from '@/data/experiences'; export default function ExperiencePage() { return ( @@ -21,8 +21,16 @@ export default function ExperiencePage() {
    - {workExperiences.map( - ({ id, startDate, endDate, position, companyName, location }) => { + {WORK_EXPERIENCES.map( + ({ + id, + startDate, + endDate, + position, + companyName, + location, + responsibilities, + }) => { return (
  • {position}

    {`${companyName} · ${location}`}

    {`${startDate} - ${endDate}`}

    + +
      + {responsibilities.map((responsibility) => { + return
    • {responsibility}
    • ; + })} +
  • ); }, From 27079feac15199d3bc478c5ac633a59f38c26974 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 18 Sep 2026 22:21:16 +0800 Subject: [PATCH 11/54] chore(type): add companyUrl property for WorkExperience type --- src/types/experience.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/experience.ts b/src/types/experience.ts index f51691c..fff62ab 100644 --- a/src/types/experience.ts +++ b/src/types/experience.ts @@ -4,6 +4,7 @@ export type WorkExperience = { endDate: string; position: string; companyName: string; + companyUrl: string; location: string; responsibilities: string[]; }; From 870ce2492d77049a47427e456bf6b6e290d3714f Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 18 Sep 2026 22:22:01 +0800 Subject: [PATCH 12/54] feat(experience): add companyUrl to each item in WORK_EXPERIENCES --- src/data/experiences.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/data/experiences.ts b/src/data/experiences.ts index 573b456..6e98a72 100644 --- a/src/data/experiences.ts +++ b/src/data/experiences.ts @@ -7,6 +7,7 @@ export const WORK_EXPERIENCES: WorkExperience[] = [ endDate: 'June 2026', position: 'Full Stack Developer', companyName: 'Freelance', + companyUrl: 'https://github.com/CodingWithJiro', location: 'Philippines', responsibilities: [ 'Managed and reviewed pull requests, approving and merging changes into main and staging branches.', @@ -21,6 +22,7 @@ export const WORK_EXPERIENCES: WorkExperience[] = [ endDate: 'Present', position: 'Full Stack Developer', companyName: 'CALEC', + companyUrl: 'https://calec.org/', location: 'New York, USA (Remote)', responsibilities: [ 'Developed modern Next.js and React applications using JavaScript, TypeScript, and Tailwind CSS.', From 0f969c6b4dfbd9a5d5d285a38bc947f9de8b9b9c Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 18 Sep 2026 22:50:43 +0800 Subject: [PATCH 13/54] feat(experience): implement card based experience UI --- src/app/experience/page.tsx | 65 +++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/src/app/experience/page.tsx b/src/app/experience/page.tsx index 16e22cc..49759c9 100644 --- a/src/app/experience/page.tsx +++ b/src/app/experience/page.tsx @@ -20,35 +20,44 @@ export default function ExperiencePage() {
-