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.txtand 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.