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.