
fetchhttpfs
Zero Blog setup is hassle free!
Zero Blog home page with a few default posts
Zero Blog post, zoomed-out to show the table of contents
Zero Blog's design is informed by zenn.dev
Zero Router containing two routes: the "Home" route and dynamic "Posts" routeTechnically, Zero Blog is NOT a "zero dependency" blog completely because I use Replit Auth and their KV Database to authenticate and store comments. I could have interfaced with the API directly, but I figured using some Replit products and packages was a necessity to create a Replit-themed template. Interestingly, Replit Auth is "technically" not a dependency because Replit automaticallys adds unique headers for logged-in users, so it is not necessarily an installed package. In any case, Zero Blog's implementation necessitates deploying on Replit because of its tight integation with Replit products. I will admit that not everything should be built from scratch - public libraries are often far better maintained, more feature complete, and battle-tested compared to what a single developer could make in a week - but building Zero Blog was certainly a fun experience. Furthermore, I realize that lightweight Vanilla Javascript libraries does not really benefit the server-end (unless the concern is having more features may impact performance or that rare case were storage actually matters), because the client is not consuming that complexity anyways.import Zero, { ZeroUtils } from "/lib/Zero"; Zero.define( "z-header", class ZHeader extends Zero { render() { return h.header( // yup, styles are inlined (or added as a style tag in the shadow DOM) { style: globalStyles.bgWrapper }, h.div( { style: styles.headerDiv }, h.a( {}, h.zLink( { href: "/" }, h.h1({ style: styles.headerLink }, "📦 Zero Blog"), ), ), h.zSearch(), ), ); } }, );
vanilla-libraries