Gravity
Gravity is an open-source, Python-native front-end web framework — FastAPI routing, Uvicorn/Gunicorn serving, JWT auth scaffolding, a CSS design-token system, and five swappable themes, ready the moment you clone it. No Node.js, no build step.
It is the front end. It doesn't store real data, send email, or run a CRM on its own — for that, connect Adhara, EIM's managed backend platform, or build your own backend on the routing, auth, and security scaffolding already here. See Backend & Adhara for the honest tradeoffs of each path.
This documentation is written for two audiences at once: a human reading it on the
site, and an AI coding agent that's cloned the repo and is reading the same .md
files directly from docs/gravity/. Nothing here is duplicated or reworded between
the two — one set of files, one source of truth.
Where to start
- Getting Started — install the prerequisites, clone the repo, get a local server running. Start here if you're setting up for the first time.
- Architecture — the stack, the directory structure, and how a request actually flows from browser to response. Start here if you're about to make a change and want to know where things live.
- Features — what's actually built in: routing, theming, auth, the Visual Editor, storage backends, deployment targets.
- Backend & Adhara — what Gravity does and doesn't do on its own, what Adhara adds, and what building your own backend actually involves.
- Deployment — shipping to Vercel, Google Cloud Run, Cloudflare Containers, or Azure Container Apps, and the Uvicorn-vs-Gunicorn tradeoff.
- Authentication — the two independent auth systems (admin, customer portal) and how each one actually checks a request.
Further reading
- Visual Editor design — the block-based content system behind the point-and-click page editor.
- JSON Schema — how message and content shapes get validated.
- Contacts — the contacts/mailing-list subsystem.
- FAQ — origin, philosophy, and common questions.
- Developer practices — git workflow and contribution norms for this project.
- The Gravity story — why this framework exists.
For AI coding agents
If you're an agent that's been pointed at this repo (or this URL) to build
something with Gravity: read Getting Started and
Architecture first — together they cover how to run it locally,
how a request flows through the app, and where each kind of change belongs
(a new page, a new API route, a new storage backend). If the change is a new page,
also read the repo's AGENTS.md —
title/SEO/Open Graph and the sitemap are generated automatically for a page that
follows the normal pattern, and it covers the couple of things that aren't (does
this page belong in the sitemap, and don't hardcode brand strings/images that
should come from site config instead). docs/gravity/*.md in the
repo is the same content you're reading now; grep it directly rather than fetching
this site if you already have the repo cloned. The repo's README.md and
.env.example are the authoritative, actively-maintained references for the full
environment-variable list — this documentation deliberately doesn't duplicate that
table, since it would go stale the moment a new one is added.