
Native Module Build Fails on Shared Hosting (node-gyp, Old glibc/Python): The .npmrc Fix
A deploy on shared hosting failed at npm install with a node-gyp compilation error — the fix wasn't compiling faster, it was skipping the compile entirely.
Looking for more on Jamstack? This collection on the Emdash Kits blog brings together related articles, guides, and insights. Browse all 47 posts below.

A deploy on shared hosting failed at npm install with a node-gyp compilation error — the fix wasn't compiling faster, it was skipping the compile entirely.

A public page under a lightweight custom layout had its spacing quietly collapse — no errors, just gaps disappearing — because the CSS custom properties it depended on were never defined there.

Three different features on the same site broke the same way — content injected via innerHTML rendered fine structurally but came out completely unstyled — because of one Astro compile-time detail.

EmDash separates who can log in and edit (a user, with one of five roles) from who gets public credit on a piece of content (a byline) — two different systems that only overlap when you want them to. Here's how both actually work.

There's no Settings → Webhooks panel in EmDash — outbound webhooks are something you build as a small sandboxed plugin using a content hook and ctx.http. Here's the real, working pattern, including the specific capability EmDash's own docs name for exactly this use case.

Content, media, schema, revisions, search, and plugin endpoints, all under one consistent response envelope and Bearer-token auth. This is the practical map of EmDash's REST API for scripts, CI pipelines, and admin tooling.

A route rebuilt at the same dynamic path can render correctly in production but come back completely unstyled in astro dev — here's why, and the one command that fixes it.

Over 11,000 new vulnerabilities hit the WordPress ecosystem in a year — 91% of them from plugins. A clear-eyed look at why WordPress security is structurally hard, and what headless does differently.

EmDash generates your sitemap, robots.txt, and JSON-LD structured data automatically — but only correctly if one config value is set. Here's the full SEO surface: site-wide defaults, per-page metadata via plugin hooks, and the one setting that silently breaks all of it if skipped.

A working blog — index page, post pages, and a way for editors to publish without touching code — in about the time it takes to define one collection and write two Astro templates.

LCP, INP, and CLS each have a specific technical cause rooted in how a CMS renders pages — not vague 'optimization' advice. Here's what each metric actually measures, why CMS architecture determines your realistic ceiling on each, and what to check before choosing a platform.

Adding a field to an existing collection is a database column change, applied live — three ways to do it (admin UI, CLI, REST API), plus the reserved names that will get rejected if you try to use them.