From 58dd2b20a3648d3d4ccdbd0e6b51d44502980468 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 28 Aug 2026 15:27:48 +0800 Subject: [PATCH 01/40] refactor(blog): move Read More links to the right side for mobile view --- src/app/blog/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index 43d0962..fa6b500 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -94,7 +94,7 @@ export default function BlogPage() { From f5fe5a59c942b99f21f9a15b04b45682f482cee6 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 28 Aug 2026 16:03:22 +0800 Subject: [PATCH 02/40] feat(blog): add breadcrumb to blog page --- src/app/blog/page.tsx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index fa6b500..400576b 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -4,6 +4,7 @@ import Link from 'next/link'; import Footer from '@/components/sections/footer'; import ThemeToggle from '@/components/theme/theme-toggle'; import { BLOGS } from '@/data/blog-list'; +import Breadcrumb from '@/components/sections/breadcrumb'; const metaDescription = 'Blog posts on full stack development and tech from Elmar Chavez.'; @@ -34,17 +35,18 @@ const blogsLatestOrder = BLOGS.slice().reverse(); export default function BlogPage() { return (
-
-
-

Blog

-

- Articles, thoughts, and tech stuff. -

-
- +
+
+
+

Blog

+

+ Articles, thoughts, and tech stuff. +

+
+
    {blogsLatestOrder.map( ({ From 691c0172dd62ddffaab2ea6d2b684e18e8381ae7 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 28 Aug 2026 16:04:10 +0800 Subject: [PATCH 03/40] perf(blog): add loading eager attribute to banner images in blog page --- src/app/blog/page.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index 400576b..bbe0500 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -71,6 +71,7 @@ export default function BlogPage() { alt={imgAlt} width={800} height={400} + loading="eager" className="aspect-video w-full object-cover transition-transform duration-150 hover:scale-105" /> From e049eded99eb2589faff92cb37ed2732f01ff407 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 28 Aug 2026 16:20:48 +0800 Subject: [PATCH 04/40] refactor(blog): use Lucide React icons for ViewAllLink and update to flex instead of relative positioning --- src/components/sections/blog.tsx | 7 ++++--- src/components/ui/view-all-link.tsx | 9 ++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/sections/blog.tsx b/src/components/sections/blog.tsx index 02881a2..76c526b 100644 --- a/src/components/sections/blog.tsx +++ b/src/components/sections/blog.tsx @@ -6,9 +6,10 @@ import ViewAllLink from '../ui/view-all-link'; const Blog = () => { return (
    -

    Blog

    - - +
    +

    Blog

    + +
      {blogList.map( diff --git a/src/components/ui/view-all-link.tsx b/src/components/ui/view-all-link.tsx index 7bf16ac..c022c4e 100644 --- a/src/components/ui/view-all-link.tsx +++ b/src/components/ui/view-all-link.tsx @@ -1,4 +1,5 @@ import Link from 'next/link'; +import { ArrowUpRight, ArrowRight } from 'lucide-react'; type ViewAllLinkProps = { href: string; @@ -7,15 +8,17 @@ type ViewAllLinkProps = { const ViewAllLink = ({ href }: ViewAllLinkProps) => { return ( View all - ↗ + + - → + ); From fe040d3b9de22ffdcb3f25c88071171b94e61479 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 28 Aug 2026 16:34:58 +0800 Subject: [PATCH 05/40] refactor(blog): use ArrowRight for Read More links and align it to right side and hide tags on mobile view --- src/components/sections/blog.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/sections/blog.tsx b/src/components/sections/blog.tsx index 76c526b..924a7c2 100644 --- a/src/components/sections/blog.tsx +++ b/src/components/sections/blog.tsx @@ -2,6 +2,7 @@ import Image from 'next/image'; import Link from 'next/link'; import { blogList } from '@/data/blog-list'; import ViewAllLink from '../ui/view-all-link'; +import { ArrowRight } from 'lucide-react'; const Blog = () => { return ( @@ -43,18 +44,19 @@ const Blog = () => {

      -
        +
          {tags.map((tag) => { return
        • {tag}
        • ; })}
        - Read More → + Read More +
      From 0bfa18051757982338f5fc40a6c033efa7cd2c4d Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 28 Aug 2026 16:46:22 +0800 Subject: [PATCH 06/40] refactor(blog): use ArrowRight for Read More in the blog page and hide tags on mobile view --- src/app/blog/page.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index bbe0500..71e747a 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -5,6 +5,7 @@ import Footer from '@/components/sections/footer'; import ThemeToggle from '@/components/theme/theme-toggle'; import { BLOGS } from '@/data/blog-list'; import Breadcrumb from '@/components/sections/breadcrumb'; +import { ArrowRight } from 'lucide-react'; const metaDescription = 'Blog posts on full stack development and tech from Elmar Chavez.'; @@ -90,18 +91,19 @@ export default function BlogPage() {

      -
        +
          {tags.map((tag) => { return
        • {tag}
        • ; })}
        - Read More → + Read More +
      From a98232538472b8fcda46764db6c9407d2f14b6f5 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 28 Aug 2026 17:07:15 +0800 Subject: [PATCH 07/40] feat(nav): make Breadcrumb font size smaller in mobile view --- src/components/sections/breadcrumb.tsx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/components/sections/breadcrumb.tsx b/src/components/sections/breadcrumb.tsx index 2fb5c35..80fd6a5 100644 --- a/src/components/sections/breadcrumb.tsx +++ b/src/components/sections/breadcrumb.tsx @@ -10,9 +10,9 @@ const Breadcrumb = ({ items, currentLabel }: BreadCrumbProps) => { return (
    From 716c9b8f0a3e3aad777aeb8165cefd16dd99e155 Mon Sep 17 00:00:00 2001 From: Elmar Chavez Date: Fri, 28 Aug 2026 17:33:37 +0800 Subject: [PATCH 10/40] refactor(blog): make Read more links only has the first letter in uppercase --- src/app/blog/page.tsx | 2 +- src/components/sections/blog.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index 0d2e413..ede2b9b 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -102,7 +102,7 @@ export default function BlogPage() { href={blogUrl} aria-label={`Read more about ${title}`} > - Read More + Read more