Skip to content
DnsLister Forum

Where domain hunters compare notes

I vibecoded my abandoned 2024 imageboard software into a modern 4chan/reddit hybrid with no voting system, 0 ads, 0 age verification, and (close to) 0 users.

I had an old imageboard project from 2024 sitting around unfinished. With AI-assisted programming improving so much, I decided to revive it and turn it into a proper site: Everiot. Most of the work has been done with GPT-5.4, GPT-5.5, and more recently GPT-5.6 sol-medium. I only run sol medium.

stack is simple:

  • Go for backend, server-side rendered with Templ library. I hate SPAs and LLM's are great with GO
  • HTMX for dynamic interactions
  • PostgreSQL
  • A small amount of typescript where it is absolutely needed
  • Docker
  • A $10 VPS
  • Cloudflare in front for DNS, routing, TLS, caching, and protection.
  • R2 for images

Cloudflare has been especially nice for this kind of workflow. Their docs are clear, the free tier is generous, and their tooling fits well into AI-assisted development. I’ve been using Cloudflare’s MCPs and skills as part of the workflow to give the coding agent more context around the platform and its APIs. If some new feature requires doing something on cloudflare's site codex can do it himself or tell me exactly what to do. I hate menu hopping.

Once I ask for a feature and it's done Codex deploys changes automatically to staging through github actions. I spent a few long hours making the pipeline lean, since I wanted to avoid burning through github actgigons free minutes during the first week. The only manual thing I do is push to prod.

DEV TOOLING

Lots of time also went into deterministic guardrails and developer tooling and not just features. I have a solid test suite, golangci-lint in the pipeline, and custom linters for Everiot-specific architectural rules that normal Go tooling would not catch.

The important distinction is that these checks are deterministic. Rather than asking an AI reviewer to “hopefully notice” a bad pattern, the repository can reliably reject it every time: forbidden dependencies, architectural boundary violations, unsafe implementation shortcuts, missing required behavior, and regressions covered by tests. Architecturally, Everiot is a modular hexagonal monolith: one deployable Go application, split into clear modules with domain logic kept separate from infrastructure adapters.

That matters a lot when working quickly with AI. The model can generate and refactor a lot of code, but the guardrails make sure new changes still follow the architecture and conventions. Tests, linters, and CI checks run before staging deploys, so the rapid iteration loop is backed by something repeatable and enforceable. I of course also use git hooks as an early layer of those guardrails

vibe coding works best when the codebase can push back.

https://everiot.org

Source: r/vibecoding · by /u/vapalera

Leave a Reply

Your email address will not be published. Required fields are marked *