Zum Inhalt springen
99ersstudio
Kolophon/aktualisiert 2026-04-24

Wie diese Site gebaut ist.

Ein Hinweis zur Implementierung hinter 99ersstudio.com. Wir halten diese Seite ehrlich, weil die Site selbst Teil der öffentlichen Arbeit des Studios ist.

Framework

  • Framework
    Next.js 16.2 with the App Router and React 19, exported as static HTML.
  • Styling
    Tailwind CSS v4 with CSS-variable-driven design tokens. No typography plugin.
  • MDX
    next-mdx-remote/rsc with rehype-pretty-code (shiki, github-dark-dimmed) for syntax highlighting at build time.
  • Search
    Pagefind 1.5 — wasm full-text index built post-next-build, lazy-loaded only when ⌘K opens.

Typografie

  • Display + body
    Space Grotesk, served via next/font, weights 400 / 500 / 700. Geometric precision for headlines and body.
  • Mono
    JetBrains Mono, used for chips, kbd elements, code, eyebrows, and metric numerals.
  • Color tokens
    Deep near-black ground (#0B0C10), electric indigo → cyan accent (#6C63FF → #38BDF8), near-white text (#ECECF0). CSS-variable driven.
  • No third-party fonts
    Two self-hosted faces only. No web font CDN call beyond what next/font inlines.

Hosting

  • Static host
    Cloudflare Pages, auto-deploy on push to main. Build command: next build && pnpm pagefind:index.
  • DNS + email
    Cloudflare Registrar + DNS + Email Routing (admin@99ersstudio.com → real inbox).
  • TLS
    Cloudflare-managed, auto-renewed.
  • Analytics
    Plausible scaffold present (cookieless, aggregate). Off until the self-host instance exists.

Content-Pipeline

  • Generator
    Python 3.12, 12 Jinja2 templates, four data sources (git log, Google Play reviews, RSS feeds, SEOMAX bridge).
  • Quality gate
    35 banned phrases, em-dash cap, EN+DE first-person counter, per-type length bounds, version + proper-noun checks.
  • LLM call
    Local Claude Code CLI (Max subscription) by default. Falls back to Anthropic API when STUDIO_LOG_USE_CLAUDE_CLI=0.
  • Header art
    Procedural SVG (mulberry32-seeded) per post type. Optional DALL-E gpt-image-1 path swaps in PNGs at /public/journal-images/.
  • Cron
    Windows Task Scheduler runs run_local_cron.ps1 daily, rotating post types by day of week, --AutoCommit pushes to main.

Performance-Haltung

  • Page weight
    All routes static-rendered. Largest JS chunk shipped: the search dialog, lazy-loaded only when opened.
  • No client framework on most pages
    Server Components do the rendering; client components only where interaction needs it (search, ToC scroll-spy, copy button, keyboard shortcuts, Mietpreis demo, reading progress).
  • Images
    next/image not in use yet — current images are the OG PNGs and procedural SVG art served as inline elements.
  • Caching
    _headers pins long-term immutable on /journal/*/opengraph-image, 1h on /feed.xml and /sitemap.xml.

Danksagungen

  • Built by
    99ersstudio (one developer, occasional contractor help).
  • Build assistant
    Claude Code on the Max subscription — most of the code and content in this site was paired with the model. No API billing.
  • Inspiration
    Panic, Plausible, Maggie Appleton's notebook, Marco Arment, Derek Sivers' /now movement, uses.tech.
  • Source
    Repo is private. Open issues and feature requests are accepted via email at hello@99ersstudio.com.