Pandorga
- Headless and S3-compatible. Your content lives independently of the Pandorga shell — write, store, and move it on your own terms.
- Studio CMS. Manage everything from quick notes to full diagrams without touching the repo.
- Fully configurable. Portfolio, CV, blog, articles, and bibliography — each with its own presentation.
Quickstart
Scaffold a site (Ada Example defaults, content.backend: static):
gem install pandorga # or use a local checkout
pandorga new my-site
cd my-site
bundle install
bundle exec pandorga doctor
bundle exec pandorga serveOr run the packaged minimal example from a clone:
git clone https://github.com/alexandrelheinen/pandorga.git
cd pandorga
git submodule update --init .guidelines # agent/prose guidelines (optional for runtime)
mise install # or use Ruby >= 3.3
bundle install
cd examples/minimal && bundle install && cd ../..
bundle exec pandorga export examples/minimal/content examples/minimal/_content_json
bundle exec pandorga doctor examples/minimal
mise exec -- ./scripts/validate.shServe from the example directory:
cd examples/minimal
bundle exec pandorga serveCLI
| Command | Purpose |
|---|---|
pandorga new PATH |
Scaffold a site from examples/minimal
|
pandorga doctor |
Validate pandorga: config |
pandorga export |
Content → JSON (manifest.json includes schema_version) |
pandorga serve |
Export + jekyll serve
|
pandorga publish |
S3-compatible object-store sync (S3_* or R2_*) |
pandorga install-functions |
Copy functions/ + studio/ into the site root |
pandorga studio-schema |
Compose Studio schema from templates |
Documentation
| Doc | Topic |
|---|---|
| docs/getting-started.md | Minimal example locally |
| docs/configuration.md |
pandorga: reference |
| docs/pages-and-templates.md | Registry and seven templates |
| docs/theming.md |
_data/themes and tokens |
| docs/extending.md | Site overrides, hero art, Studio overrides |
| docs/architecture.md | Shell, JSON, runtime, Studio |
| docs/upgrading.md | Semver, schema_version, gem pins |
| docs/studio.md | Studio env and schema compose |
| docs/studio-android.md | Optional Expo Android WebView shell |
| docs/deploy/static.md | Static backend |
| docs/deploy/cloudflare.md | Pages + object store |
| docs/spec.md | Migration plan and acceptance criteria |
| docs/decisions.md | Frozen decisions |
| CONTRIBUTING.md | Gates, and the Lighthouse mobile release rule |
Releases
Lighthouse mobile thresholds apply to releases. A stable release scores
90 or above. A score from 75 to 89 is acceptable only to ship a bug fix,
and an urgent performance campaign must then bring it back to 90 or above.
Below 75 is never acceptable for a release. A pull request or a merge may
score lower when that is unavoidable to keep the work modular. The release
build publishes at 90 or above. Notes that include LIGHTHOUSE_BUGFIX=1
may publish a bug fix from 75 to 89. Pull requests and merges only warn
on the score. The same run fails when the loaded example home has no
project or article items. The checklist is in CONTRIBUTING.md.
License
MIT — Copyright (c) The Pandorga contributors.