Personal project

vntp.fr: this website

A static site generated from a headless CMS, republished within seconds on every change.

Role
Solo design and development
Period
Oct 2026 – ongoing · VNTP
Stack
  • Astro
  • Directus 11
  • Node.js
  • PostgreSQL
  • Docker
  • Caddy
  • Schema.org

How it works

The content (resume, blog, portfolio, project sheets like this one) lives in Directus. The public site is made of static pages generated by Astro: fast, lean, with no server-side attack surface. Directus is never exposed publicly.

Instant publishing

  • Every save in Directus triggers a Flow that calls a small build service.
  • The service copies the sources, runs the build, then switches over in one go to the new version (atomic symlink, three versions kept). A failed build never touches the live site.
  • Several saves during a build trigger only one more. Scheduled posts go online on time through a periodic build.
  • Images and PDFs are downloaded at build time, converted to WebP at the right size and published with the site.

SEO and accessibility

  • Bilingual French / English: hreflang, x-default, translated post URLs.
  • JSON-LD structured data (Person, BlogPosting, CreativeWork, breadcrumbs), Open Graph, sitemap, RSS per language.
  • Light / dark theme, semantic HTML, no JavaScript framework for visitors.

Infrastructure

Everything runs in Docker containers on a self-hosted server, behind Caddy, with the CMS on an internal network. The CMS schema is created by an idempotent script, versioned in Git.

← Back to the portfolio