Skip to content
Design Hacker HQ
Esc
navigateopen⌘Jpreview
On this page

Site & Blog Truth

The blog platform verdict, the live blog stack, and what's actually shipped on the DH site versus what's still planned.

Ruled 2026-07-01

This page pulls the real detail behind the one-liner in the Decisions Log: “The DH engine wins. Strapi stays parked, demand-gated to editorial-team clients.” If a spec elsewhere disagrees with this page, this page loses to BLOG-STACK-CURRENT.md and the newer master plans it points to. Those are the actual _TRUTH/ files.

The verdict, in full

The Strapi blog platform (Strapi + Next.js) is not dead. It becomes a demand-gated editorial TIER: sold only to a client with a real editorial team, hosted and run by Rene under a recurring-revenue deal, wearing Design Hacker’s brand system as licensed Background IP. Strapi integration work pauses until a buyer exists. Nothing built with Rene strands. The /system stack, pack store, loader contract, and template designs stay live infrastructure the whole ecosystem already rents.

Both DH and Bex publish as a Notion channel on the Platform instead. DesignHacker.com articles ship at /blog/ post-launch. Bex publishes zero editorial today and nothing on a 12-month horizon crosses the line.

The capability line

The honest test for when a CMS like Strapi earns its keep over a Notion channel:

Notion channel wins

Content volume in the thousands or less. 2-5 trusted authors. Informal draft/approval. Cron-triggered rebuild scheduling. Static SEO by default. Andrew owns it alone, config not code.

CMS platform earns its keep

5,000+ items, changing many times a day. Roles and permissions for external contributors. Formal multi-stage approval chains. Per-request dynamic content, personalization, gating, comments. Someone has to patch and monitor an always-on server, forever.

The line in one sentence: the CMS earns its keep when the content operation is a team with process, or pages must be dynamic per request. A founder-led brand publishing weekly, even a franchise publishing monthly, lives comfortably below it.

Why Bex and DH both land on Notion

Bex’s live site (checked 7/1) has no blog, no articles link, no editorial surface in nav or footer. Its real cadence is roster and location updates, already handled by two Notion DBs, edited by a team already trained on Notion. DH is one author, Andrew, with Buddy as a byline, publishing at founder cadence, with the content model already designed (an Articles DB: Slug, Published, Order, plus FAQ for AEO). Neither crosses the capability line. Adding Strapi to either would mean adding a second CMS with no buyer.

The product shape, when it does sell

  • The buyer: 3+ people touching content, 10+ posts a month, formal approval, or editors who will never touch Notion. Funded startups with content teams, agencies running editorial for multiple clients, publishers. Not Andrew’s audience, not the current roster (Bex, Valley Home, FranDevCo).
  • The ladder position: top tier of the site offer. The Platform (Notion channel) is the default every client gets. The editorial tier is the upsell when a client outgrows it.
  • Who hosts it: Rene, always. Strapi is always-on infrastructure and Andrew does not own always-on infrastructure. If Rene doesn’t want a managed-service business, the tier comes off the shelf entirely.
  • IP boundary: Design Hacker licenses the Background IP into the tier (tokens, pack store, loader contract, template designs, Block Registry). Rene owns the Strapi + Next implementation and hosting. Each client’s brand pack and content stays the client’s.

BLOG-STACK-CURRENT: what the stack actually is today

BLOG-STACK-CURRENT.md is the single canonical pointer for the blog and brand layer. Its rule: if another spec disagrees with it, that spec is stale. Frozen 2026-06-11, re-verified live against share.designhacker.com.

Shared system, loaded first by every property

share.designhacker.com/system/tokens.css and /system/components.css. Live, verified, HTTP 200. This is Theme infrastructure for every property, verdict-independent.

Pack schema frozen at v1.3

Packs declare 7 variant keys: scheme, density, motion, typescale, elevation, line, style. The loader can already write ~29 variant data-* attributes, but no live pack carries them yet. Do not target anything newer until the remaining variants promote in Round 2b.

9 live brand packs

dh-magenta (the DH house pack), alive-water, calvary, linenfield, midnight-press, minimal-mono, acid-garden, sunday-press, tonic-tide. All 9 confirmed canonical and live in the deployed store at share.designhacker.com/brand-packs/{id}.json, manifest at brand-packs/index.json.

The consumption contract

Load /system/tokens.css then /system/components.css first. Load the thin local overlay (tokens-v2.css slots + components-v2.css layout). Run loader.jsapplyDhBrand(pack), which writes CSS vars and data-* attributes onto <html>. Components read tokens via var() and never write them. Brand swap = swap the pack, nothing else.

What's actually built vs. still a CONFIRM

Live today: template-1-v2 at share.designhacker.com/blog/template-1-v2/, content hardcoded. Still open: storage (flat-code now vs. Strapi later), framework choice, hosting, domain (apex vs. test, an SEO consequence), analytics. Not built at all: article storage, slug routing, article index, sitemap, one real article through the full pipeline. The Article Writing Wizard is fully specced but unbuilt.

DH Site Master Plan: current shipped state

DH.com is instance one of the Brand Builder Engine: a conversion-first public brand brain wired to a lead-and-revenue loop, tracked end to end. As of the last update (post-Wave-7, 2026-07-06):

Live on main and deployed: designhacker.com serves the new hero (“The world is moving fast. Build something solid.”), the real DH logo, a rewired opt-in with consent and honeypot, /thanks/checklist/, /club-offer/ (Brand Builder Club at the $1,500 ladder price), and /story/revenue-brain/ (DH Build Story #1). The Cloudflare zone-level redirect exception for /club-offer/* and /story/* is live and curl-verified. The bbe-lead, bbe-events, bbe-rules, and bbe-rollup workers are live and healthy, with the beacon confirmed firing on home and thanks pages. Two Brevo DH Nurture automations are live.

The milestone: cleared 2026-07-06. Proof record #1 landed: Andrew’s real opt-in, full chain verified, rollup reading real numbers.

Still open before full launch:

  • /club routing: carve a zone-rule exception, or keep the offer permanently at /club-offer/
  • Club price reconciliation: page ships at $1,500, Podia’s live page was showing a $499 promo as of the last check
  • A calm week of staging telemetry before the soft-launch call
  • The deliberate ROBOTS=allow decision, which does not happen before the calm week completes

ROBOTS stays DISALLOW (staging posture) until that decision. /club-offer/ carries its own hardcoded noindex separately from the global flip.

Unified Map and Ship Plan: real current priorities

The Unified Map names the five-part machine customers see: the Brand Brain (what your brand knows), your Identity (what it wears), the Theme (how it becomes a site), the Platform (where it’s built and found), and the Sales Engine (what books the revenue). Together, the Brand Builder Engine.

Proven and live

bexandcosalon.com (the Platform proof, 85 pages in 4 days). bex-membership (the Sales Engine proof, real Notion data, dry-run sends). brandwithai.com (the factory, public beta). share.designhacker.com (the Theme’s /system files and pack store).

Parked, not dead

The Strapi + Next blog platform, pending a real buyer. The BWA tokens.css exporter, a stub until a paying customer needs it. A grand unified pack-schema migration. A master multi-client dashboard, killed 6/28, stays dead.

The v1 ship call (revised 2026-07-01, Andrew): designhacker.com v1 is a simple one-pager with fresh messaging, not the full 7-page apex build. Toolbox needs a content cleanup pass first and moves to v2. Not in v1: Toolbox, Watch, Articles, any Notion channel wiring, forms worker, new blocks, new motion.

The v2 queue, in order: Watch channel, then Toolbox (after the content cleanup pass, forging the Notion-channel pattern), forms worker, Articles channel (pending the blog verdict above), DH’s own Sales Engine Desk, Sales Engine loop hardening, token-source reconciliation, minor dedupe cleanup.

The critical path: messaging lock → one-pager on staging → redirect safety net → cutover → DH.com live → v2 channels → extract the starter repo and site-spinup skill → Valley Home staging → contractor ops pack → generic vertical (Kelli, FranDevCo).

Was this page helpful?