Show HN: Vertex.js – A 1kloc SPA Framework

A 1,000‑line web tool drops as one file — cue font wars, size shaming, and name drama

TLDR: Vertex.js is a tiny, drop‑in one‑file framework for app‑like websites, promising simplicity with no build tools. Comments exploded over font readability, real file size versus rivals like Preact, old‑school packaging (UMD vs modern ESM), mixed templating styles, and a name easily confused with Vert.x.

Vertex.js lands with a flex: a single-file, no‑dependency tool to build “single‑page apps” (websites that act like apps) that’s jQuery‑friendly and React‑ish, right from a plain script tag. The dev touts it as 1,000 lines of code, UMD (Universal Module Definition) compatible, and ready to drop in from a gist. But the community immediately turned the spotlight elsewhere.

First punch? Font‑gate. One commenter roasted the site’s tiny Courier New: “unreadable” at 13.5px, claiming “optimal is 18px” with receipts in a font sizing doc. Next came size shaming: fans of super‑lean tools demanded a real download size instead of “1kloc,” name‑dropping Preact (a tiny React alternative) at roughly 3KB. Then the design duel: why mix React‑style components with mustache templates? Are we building with two hammers for one nail?

The packaging sparked its own soap opera. Vertex ships as UMD to work everywhere, but critics asked, “In 2026, not ESM (modern JavaScript modules)?” Meanwhile, the name drama brewed: Vertex vs. Vert.x — different tools, same vibes, cue confusion.

Amid the chaos, the supporters loved the no build step and “just drop it in” simplicity. The skeptics questioned the kitchen‑sink approach and old‑school packaging. Verdict: tiny framework, massive discourse — and yes, the font size won day one.

Key Points

  • Vertex.js is a single-file SPA framework (~1kloc) with no build step and no external dependencies.
  • It ships as a UMD module and supports usage via script tag, CommonJS require(), and AMD define().
  • The library is jQuery-compatible; if jQuery is present, $ is left untouched, otherwise $ refers to Vertex’s DOM wrapper.
  • Templates can be loaded with Vertex.template.load(), using a configurable baseUri for relative paths and supporting HTML <template> fragments with Mustache-style syntax.
  • The V$ / VQuery DOM layer provides a chainable, jQuery-like API for selection, event handling (.on/.off/.trigger), and attributes/styles management.

Hottest takes

"I was going to say that font is unreadable, but its Courier New." — DiabloD3
"1kloc is a bit abstract ; ... preact is about 3kb" — 6r17
"Are developers still using commonjs? ... ESM is well supported." — hirako2000
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.