Quick Start

Clone, install, configure, and run Gravity Node locally in under five minutes.

Prerequisites

Node.js 18.20+ and npm. That’s it — unlike the Python original, there’s no separate Python/pip toolchain to install.

Starting from a completely bare machine? Install Your Tools covers Git, the GitHub CLI, Node.js, a text editor, and an AI coding agent with one idempotent command per OS.

Clone, install, configure, run

# 1. Clone and install
git clone https://gitlab.com/eim_opensource/gravity-node.git
cd gravity-node
npm install

# 2. Configure
cp .env.example .env
# generate a SECRET_KEY:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# paste the result into SECRET_KEY= in .env

# 3. Run it
npm run dev

Open http://localhost:3001. That’s a fully working site — home, about, features, blog, events, forms, links, podcast page (unconfigured), shop, gallery, and a customer portal — all reading from data/content/, no external services required.

Prefer an AI coding agent to do this for you?

Open /get-started in the running app (or read it as plain source at src/pages/get-started.astro) — it’s a copy-pasteable prompt for Claude Code, Claude Desktop, or Codex that clones the repo, installs it, runs it locally, and — once you confirm it looks right — deploys it to Vercel and hands you back a live URL.

Unlock the admin dashboard and editors

Local admin auth normally requires a real Adhara-backed session (not yet implemented — see FAQ & Roadmap). For local development, set the dev bypass:

# in .env
GRAVITY_DEV_ADMIN=1

Restart the dev server, then:

  • Visit /admin — the dashboard, with a live “Feature backends” panel showing which features are local vs. Adhara right now.
  • Look for the ✏️ floating button in the bottom-right corner of the home, about, or features pages — that’s the inline click-to-edit editor.
  • Visit /admin/editor/build/home for the full drag-and-drop builder canvas (built on GrapesJS).

Never set GRAVITY_DEV_ADMIN=1 in production — it bypasses login entirely.

Seed sample content

npm run content -- import docs/gravity/examples/content.sample.json
npm run blog -- import docs/gravity/examples/blog.sample.json
npm run events -- import docs/gravity/examples/events.sample.json
npm run links -- import docs/gravity/examples/links.sample.json
npm run shop -- import docs/gravity/examples/shop.sample.json
npm run courses -- import docs/gravity/examples/portal/courses/building-with-ai.json

Or, if you’re running the Docker path: make editor builds the container, seeds all of the above, and starts with the admin/portal dev bypass on — see the printed URLs when it’s done.

Your first edit

  1. Open /admin (with the dev bypass on).
  2. Click Inline edit on the Home page, or Open in Builder.
  3. Change some text, save/publish.
  4. Refresh the live page — the change is there. It’s now sitting in data/content/pages/home.json (or wherever GRAVITY_STORE_BACKEND points), not in a database.

That’s the whole content loop: every editor — inline, builder canvas, or the npm run content CLI — reads and writes the exact same Section[] data through src/content/content.ts. See The Content Model for how that works under the hood, and why it matters if you’re extending the template rather than just using it.

What’s next

  • The Content Model — how the block/schema system works, and the one rule that keeps both visual editors working.
  • Adhara Integration — connect a real CMS backend, feature by feature.
  • Deploying — ship it to Vercel, Cloudflare, Google Cloud Run, or Netlify.