Cases
Evidence, not vibes
Industry, starting point, and numbers — not a generic portfolio grid.
Public material instead of gated decks: case studies with the problem and metrics, a blog to align IA and technical SEO, and patterns for the App Router (metadata, schema, indexing, CWV). The pattern catalog is below; a dedicated “Patterns” page is handy for bookmarks and breadcrumbs. Cases and blog are linked from the section cards. The English library is written for SMB teams in the United States and comparable markets; we adapt examples by locale and name contentious topics (rich results, duplicate URLs) plainly.
Projects, long reads, or copy-paste snippets for your repo — depending on what you need.
Problem, stack, and post-launch metrics you can map to your own brief.
Notes on IA, technical SEO, acceptance, and forms for stakeholder alignment.
App Router snippets for metadata, schema, and indexing without reinventing basics.
Ready-to-use snippets for Next.js App Router: JSON-LD, sitemap, robots, canonicals, redirects, CWV. The same catalog with an audience intro lives on the Patterns page.
Level reflects depth in Next.js, TypeScript, and SEO/markup: basic (follow the snippet), intermediate (integrate in App Router), advanced (policies and edge cases in search).
Time estimate is a guide for reading and a first implementation in a typical project; your process may differ.
Filter by topic
All topics in one list. Use the filter above to narrow it down.
One sitemap with static and content URLs; aligned with collectIndexableUrls and canonical URLs.
Static robots via app/robots.ts and per-route noindex via generateMetadata.
One helper feeds both visible breadcrumbs and markup — names and URLs stay in sync.
Linked @id values in @graph: organization, person, site — the base for other entities.
Avoid markup “for stars only”: visible content, one primary intent per page, Google guidelines.
A generateMetadata pattern with canonical and Open Graph — baseline SEO hygiene.
301/308 for slug changes and duplicate consolidation; watch for loops and canonical drift.
Practical levers: LCP image priority, stable layout, splitting heavy JS.
Cases before the call, articles before sign-off, patterns before you edit code. Together they cut bad specs and late prod fixes.
Cases
Industry, starting point, and numbers — not a generic portfolio grid.
Blog
IA, SEO, and “done” criteria before the budget is gone.
Patterns
Metadata, schema, and indexing stay consistent across templates.