Skip to content
Blog Post
Building e-stim.kreativekommit.com as a Static Site

Building e-stim.kreativekommit.com as a Static Site

e-stim.kreativekommit.com is my site about e-stim: background information, how-to guides, notes on units and electrodes, build and repair projects, and safety guidance.

The site grew out of my long-running interest in e-stim and violet wands, backed by many years as an electrician and working with electronics. It's where I share what I've learned, and it sits alongside the e-stim device I'm building.

It's a reading site. Nothing is sold through it, and there are no accounts or payments. That shaped almost every decision about how it's built.

The stack

  • Framework: Next.js 16 (App Router), React 19 and TypeScript
  • Styling: Tailwind CSS 4
  • Content: Markdown files with frontmatter, rendered with remark and rehype
  • Hosting: my own server, running nginx and PM2 behind Cloudflare

Every page is static HTML

Every page on the site is built as static HTML when I deploy. Nothing is generated when a visitor asks for a page, so there's no database to query and no server code running per request.

For a site that's all reading, this is the right fit:

  • It's fast. The server just hands over a finished file, and Cloudflare can cache it close to the reader.
  • There's less to go wrong. No database and no per-request code means far fewer moving parts to break or secure.
  • It's cheap to run. Serving files takes very little from the server.

Content lives in Markdown

Guides, info pages, projects and blog posts are all Markdown files with frontmatter at the top for the title, date and other details. Writing a new guide means adding one file. There's no admin panel and no database.

Drafts show up in the development server so I can preview them, but they're left out of the production build until they're ready.

Small things that matter

  • Social previews: every illustration on the site has a matching social-preview image. The build checks that none are missing, so a shared link never turns up without a picture.
  • No analytics: the site doesn't track visitors.
  • A contact form with a fallback: the contact form uses Web3Forms. If the form isn't set up, the page shows the email address instead, so there's always a way to get in touch.

More from the code side

You can see what else I'm building on the Code site's projects page. If you'd like a fast, static site like this for your own project, get in touch.

Thanks for reading! Got a question or an idea for a build? Get in touch.