Overview

A Node.js/Astro CMS template — local JSON by default, a real headless CMS (Adhara) when you're ready, one command to deploy anywhere.

Gravity Node is a boilerplate for going from zero to a deployed, editable website in minutes. Clone it, run one command, and you get a themed, server-rendered site (Astro, SSR) with a working blog, events, forms, a customer portal, an e-commerce storefront, a media gallery, an admin dashboard, and two visual editors for page content — all wired up already.

It’s the Node/Astro sibling of Gravity, the original Python/Flask framework — same architecture, same content model, same “local JSON ↔ Adhara” story, ported to a stack most platforms support natively.

The core idea

Everything in this project follows one rule: content is stored as local JSON files by default, and switches to a real headless CMS (Adhara) when you connect one — feature by feature, not all-or-nothing.

  • Out of the box: blog posts, events, page content, links, shop items — all plain JSON under data/content/. No database, no account, no API key. Clone it and it works.
  • Connect Adhara by setting a couple of env vars, and individual features switch over independently. Run events on Adhara while the portal stays local. See Adhara Integration for exactly how this works per feature.
  • Deploy anywhere — Vercel, Cloudflare, Google Cloud Run, or Netlify, with one command each. See Deploying.

Who this is for

  • A site owner who wants a real website with a blog, events, a shop, and a client portal, without committing to a specific CMS on day one.
  • A developer extending the template — every architectural rule that keeps the two visual editors working is documented in Architecture, not just implied by the code.
  • An AI coding agent building on top of this template. This documentation is written to be exactly as useful read raw as it is rendered — see the machine-readable index at /llms.txt and the full corpus at /llms-full.txt.

Where to start

I want to… Go to
Get a copy running locally Quick Start
Understand how content editing works The Content Model
Add a new block type, or a new page section The Content Model
Understand the pluggable storage backends Storage
Connect a real CMS backend Adhara Integration
See what’s built already Features
Ship it Deploying
Look up an env var or CLI command Environment Variables, CLI Reference

How this differs from the Python original

This is a core-first v1, not a 1:1 port of every feature in the Python repo — see the comparison table in the README for the full breakdown. The short version: everything content-related (blog, events, portal, scheduling, links, forms) is ported; a handful of things new to this port didn’t exist in Python at all (a real e-commerce storefront via the Adhara Commerce SDK, a podcast page, a media gallery, Netlify as a fifth deploy target, an idempotent “install your tools” script); and a couple of things (paid event/membership checkout, real Adhara-backed admin login) are deliberately deferred — see FAQ & Roadmap.