Skip to content

Built with NoFPress

We practice what we preach.

This very website is statically generated, version-controlled and deployed to a global CDN. No WordPress. No plugin maintenance. Just a streamlined publishing workflow.

The actual stack

Everything listed here is in use on this site today. Nothing aspirational.

  • Next.js App Router

    next@16.3.8

    App Router, used purely as a static site generator

  • Static export

    next@16.3.8

    Every page is written to disk as HTML at build time

  • TypeScript

    typescript@6.0.3

    Strict mode across pages, content tooling and scripts

  • Tailwind CSS

    tailwindcss@4.3.3

    Utility-first styling compiled to a single small stylesheet

  • Markdown

    remark-parse@11.0.0

    Articles and long-form pages live as Markdown files

  • gray-matter

    gray-matter@4.0.3

    Parses and validates YAML frontmatter

  • remark / rehype

    remark-rehype@11.1.2

    Markdown to sanitized HTML, with heading anchors and code highlighting

  • Git-based publishing

    Every content change is a commit, reviewed and reversible

  • Cloudflare CDN

    Static files served from Cloudflare Pages' global network

  • Build-time translations

    @anthropic-ai/sdk@0.131.0

    LLM-drafted translations, reviewed by humans, generated before build

Architecture

Everything happens before a visitor arrives. At request time there is only a CDN serving files.

  1. 01

    Markdown + Git

    Articles, pages and UI copy in five languages

  2. 02

    Content validation

    Frontmatter schema, links, translation parity

  3. 03

    Next.js static build

    Pre-renders every page for each domain

  4. 04

    Static HTML / CSS / JS

    Plain files — no server, no database

  5. 05

    Cloudflare CDN

    Cached at the edge, close to visitors

  6. 06

    Visitor

    Gets a ready-made page

Performance results

We only publish measurements we have actually taken, with the tool, date and conditions alongside them.

$ lighthouse --verified

Measurements coming soon.

Results will appear here after we measure the production site and review the reports.

Publishing workflow

  1. 01

    Write Markdown

    An article starts as a Markdown file in English.

  2. 02

    Generate translation drafts

    A script asks an LLM for draft translations, keeping code, links and names intact.

  3. 03

    Review translations

    A human checks every draft. Nothing machine-translated is published automatically.

  4. 04

    Commit to Git

    Approved files are committed; the history shows who changed what.

  5. 05

    Build

    CI validates content and builds two static sites: nofpress.com and nofpress.pl.

  6. 06

    Deploy

    The output is uploaded to Cloudflare Pages and served from its CDN.

Tradeoffs we accept

  • Publishing needs a build

    A typo fix isn't live the moment you save. It goes live when the next build finishes deploying — usually minutes.

  • Forms need a separate service

    Our audit form posts to a small Cloudflare Worker. It's a second moving part we have to maintain and secure.

  • Editing is Git-based

    That's comfortable for developers. Non-technical editors would want a Git-based CMS interface on top.

  • The framework still ships JavaScript

    Next.js sends a client runtime for navigation and hydration. Pages work without it, but it isn't zero-JS.

  • Translations still need people

    LLM drafts speed things up, but every language needs a reviewer who knows the market.

Want your website to work like this?

Tell us about your WordPress site and we'll check whether a static migration makes sense.

Get a Free Migration Audit