Dev Log: 2026-07-23 โ€” a portfolio-wide SEO pass
DEV Community

Dev Log: 2026-07-23 - a portfolio-wide SEO pass

TL;DR

  • Ran the same SEO + analytics checklist across five public repos and a couple of private ones in one day.
  • Different stacks (Laravel, Next.js, Astro), same shopping list: meta/OG, canonical, sitemap, robots, JSON-LD, env-driven analytics.
  • Lesson: SEO is a checklist you port, not a feature you invent per project.

Today was a theme day. Instead of one repo getting a big feature, nearly the whole portfolio got the same treatment: search-engine and analytics plumbing. Doing it across stacks back to back made the pattern obvious - the concepts are identical, only the syntax changes.

The checklist, ported across stacks

Every site got the same items. What differed was just how each framework expresses them:

Item Laravel Next.js Astro
Sitemap artisan command / route sitemap.ts @astrojs/sitemap
Robots dynamic /robots.txt robots.ts public/_redirects + file
Canonical + OG Blade head partial layout.tsx metadata BaseLayout.astro
Structured data JSON-LD Blade partial <JsonLd> component inline <script type="ld+json">
Analytics env-driven GA/GTM NEXT_PUBLIC_GA_ID env-driven GA

Same five rows, three languages. Once you've done it once, the rest is translation.

Public repos

The Laravel starter kit Kickoff got the meatiest change - a full admin-editable SEO & analytics baseline (I wrote that up as its own post today). Its marketing site kickoff-web got a landing-page redesign plus the SEO infra, canonical domain, and hreflang/schema graph.

On the Astro side, g8suite-web picked up a structured-data graph (WebSite / WebPage / Breadcrumb / SoftwareApplication), an OG image, and a sitemap index.

gatherhub-web got sitemap, robots, canonicals, JSON-LD and GA - plus a satisfying cleanup pass dropping dead template code.

And the DevHub website shipped per-route SEO, a generated sitemap, env-gated GA4, and a new trainings catalogue with proper FAQ schema on each page.

Private work (anonymized)

On a private Laravel events platform I ran the same SEO phases - meta/OG plumbing, JSON-LD structured data on public pages, admin-configurable analytics - then a performance phase: WebP image conversions, lazy loading, and LCP priority hints. The reusable idea there: build JSON-LD via small invokable action classes (BuildEventJsonLd, BuildSitemap) so the schema logic is testable and out of the views. I also spent time drafting course content and marketing image packs for an upcoming training programme - organising material, not shipping code.

Takeaway

Treating SEO as a portable checklist rather than a per-project scramble turned a full day of "boring infra" into fast, repeatable work. Write the list once, keep it in your head (or a doc), and every new project starts three steps ahead.

Top comments (0)

Comments

No comments yet. Start the discussion.