Team-ready: content validation, permissions, quality dashboard, AES-256-GCM encryption, SvelteKit — admin@0.3.80 · Changelog →

Your entire CMS
in one file.

Content, media, schema, users — all in a single POD. One SQLite file. Copy it anywhere. No database server. No cloud account. Built for Astro.

$ npm install @a83/orbiter-admin
localhost:4322
Orbiter Space Station mode — dark glassmorphism dashboard with floating dock
0 cloud deps
1 file your entire CMS
20 built-in features
offline no internet required
MIT free forever
< 2 min to first admin
As written about on
D
dev.to
I built a CMS that fits in one file — here's why and how
Every CMS I've tried for Astro comes with the same overhead: a database to provision, a media CDN to configure...
Read article →
D
dev.to
Building a standalone CMS admin with Hono and vanilla CSS glassmorphism
How I extracted the admin from the Astro integration into a standalone Hono server — architecture, CSS glassmorphism without a build step, and the theme system.
Read article →
Y
Hacker News
Show HN: Orbiter — CMS in one SQLite file for Astro
Hacker News discussion — community feedback, use cases, and technical questions.
Read article →
X
X · @gerwinweiher
Orbiter — CMS in one SQLite file for Astro
One file. No database server. No cloud account. Built for Astro. Copy it anywhere, back it up with cp.
Read article →

See it in action

A full CMS admin — standalone server on port 4322, glassmorphism UI, three themes.

Orbiter Space Station mode — dark glassmorphism dashboard with floating dock
Space Station mode — glass cards, stats sidebar, notes & to-do, floating dock

Write. Insert. Arrange.

A block-based editor built for real content — rich text, inline images, and layout controls without leaving the page.

Orbiter block editor — heading, paragraph, and inline image with alignment controls
Block editor — B / I / code / H1–H3 / quote / list / divider / image
Image picker sheet showing media library thumbnails and upload button
Insert from anywhere

Pick from your media library or upload directly — the native file picker gives you access to iCloud Drive, Dropbox, Google Drive, and any connected cloud folder, no integration needed.

Editor showing image floated right with text wrapping around it, alignment toolbar visible
Text flow control

Float images left or right so text wraps around them naturally — or center them, or stretch full-width. One click, instant preview in split view. Serialized as standard markdown.

What's new

Recent updates and improvements to Orbiter.

Jun
2026
admin@0.3.78 · cli@0.3.9 — Latest
Team-ready: content validation, permissions, quality dashboard, encryption, SvelteKit
  • Content validation — schema fields support required, min, max, and regex. Drafts always save freely. Publish/Schedule shows an inline error banner. Server enforces the same rules via 422.
  • Collection permissions — restrict editor users to specific collections. Configured per-user in a checkbox modal. Admins are always unrestricted.
  • Content quality dashboard — sidebar panel scans all published entries for missing body, short body, no image, and no SEO metadata. Issue counts at a glance.
  • Schema migration — rename a field including all entry data in one atomic transaction. Also: change-type and delete-field routes.
  • Multi-pod dashboard — link multiple pod files, see published count, collections, size, and last modified across all projects in one page.
  • orbiter encrypt/decrypt — AES-256-GCM with scrypt key derivation. Commit the .pod.enc to git, decrypt in CI with a secret.
  • orbiter sync — rsync push/pull in one command. orbiter status — pod health in the terminal.
  • SvelteKit support@a83/orbiter-client opens the pod directly from any Node.js framework. <OrbiterImage> Astro component with auto lazy, alt, and dimensions.
Jun
2026
Content Layer + Publish HTML + Suggestions v2
Standard astro:content API, static site generator, AI suggestions, CLI, UI polish
  • Astro Content LayerorbiterLoader() for build-time, orbiterLiveLoader() for SSR. Use getCollection() from astro:content instead of the custom virtual module. Auto Zod schema, hot reload on pod changes.
  • Smart Suggestions v2 — multi-section panel with tags, cross-collection related entries, AI SEO title & description, content quality hints, suggestedPrompts. Manual ✦ Suggest button grouped with ✦ AI.
  • Publish HTML — one-click static site. Two themes: Orbit (modern) and Canvas (editorial whiteboard). Dark mode, responsive, OG tags, reading time.
  • CLIorbiter publish generates HTML from terminal, orbiter backup creates timestamped pod copy.
  • UI polish — dashboard greeting, live word count, pulsing autosave dot, favicon badge, pod size in sidebar, collection color dots, relative timestamps, shortcut hints.
Jun
2026
admin@0.3.74
Calendar view, Simple Analytics, cross-pod copy & desktop auto-update
  • Calendar view — full month-grid page with color-coded entries (scheduled/expiring/published/draft). Click a day to see entries, filter by status, keyboard nav. Dashboard widget with mini calendar + upcoming list.
  • Simple Analytics — privacy-friendly pageview tracking stored in the POD. No cookies, no external scripts, <500 bytes. Bot detection (GPTBot, ClaudeBot, etc). Dashboard with daily chart, top pages, referrers. Human vs. agent traffic split.
  • Cross-pod import/export — export all collections + entries as JSON. Import from a .pod file or JSON export. Collections created automatically, skip or overwrite duplicates.
  • Desktop auto-update — the Electron app downloads new releases from GitHub in the background. Universal macOS DMG (M1 + Intel in one file). One-click backup (⌘⇧S).
  • Table field — mini-spreadsheet as a schema field type. Header row, data rows, add/remove rows and columns, Tab navigation. Stored as string[][].
  • Dashboard widget toggles — enable/disable Calendar, Recently Edited, Collections, Notes & To-Do in Settings.
  • OG Image picker — media picker modal in the SEO panel instead of a dropdown. Image preview + clear button.
Jun
2026
Desktop v0.2.2
Desktop App for macOS & Windows — pick a template, start editing.
  • Templates on first launch — choose Blog, Portfolio, Business, or Events. The app creates all collections and fills them with demo content so you can see how everything works right away.
  • macOS — DMG installer, drag to Applications, double-click. Apple Silicon (arm64) and Intel (x64).
  • Windows — NSIS installer wizard, optional install directory. x64.
  • Self-contained — Electron bundles the full admin server. Runs locally, no internet required after install.
  • Multi-site switching — File → Switch POD (⌘O) switches to a different content database and restarts instantly.
Jun
2026
v0.3.47 — New
Station dock overhaul — command palette, keyboard nav, notification center & more
  • Command palette⌘K or / opens a full-screen palette. Opens with recent entries pre-loaded. Type > to enter command mode: > ls, > go, > new, > search, > build, > export, > random, > = expr (math evaluator). Command history with ↑/↓.
  • Vim keyboard navigation — press g then a letter to jump to any page: g d dashboard, g m media, g h HUD, g s settings, g b build, and more. Animated g › indicator in the status bar while waiting for the second key.
  • Notification center — bell icon in the status bar. Every save, build trigger, and export is logged automatically. Dropdown panel with unread badge, relative timestamps, and clear-all.
  • HUD panel expanded — Drafts section (last 10 drafts, clickable to editor) and Activity feed (last 8 events as a live timeline). Opens with g h or the dock button.
  • Zen / focus mode⌘⇧F hides the dock and status bar for distraction-free writing. Persists across reloads. Toast hint on enter.
  • Shortcut cheatsheet? key or ? button in the status bar opens a two-column modal with every shortcut and palette command.
  • Live build status — status bar shows ◉ building… with a pulse animation while a build is running, polling every 4 seconds until done.
  • Breadcrumb in status bar — when inside a collection, the center shows Collection › Entries with a clickable link back.
  • Left dock mode — toggle dock position between bottom and left side. All popups, overlays, and magnification axis adapt automatically.
  • Hover preview cards — hovering a collection in the dock shows a card with the 3 most recent entries and quick-action buttons (new entry, view all, export).
Jun
2026
v0.3.20
Space Station mode, multilingual i18n & settings overhaul
  • Space Station mode — a distinct admin layout: floating magnification dock (macOS-style), HUD status-bar panel with stats and notes, frosted glass page headers with contextual action buttons. Toggle in Settings → Interface → Layout.
  • Mobile tab bar — in Station mode, the dock collapses to a native-feeling bottom tab bar on screens under 768 px. Stats stack to a 2×2 grid; cards resize automatically.
  • Multilingual (i18n) — per-entry locale variants using a dedicated locale column (not slug suffixes). Configure locales in Settings → Language; locale tabs appear in the editor automatically. getLocaleCollection() and getLocaleEntry() in orbiter:collections with automatic fallback to the default locale.
  • Settings two-column layout — settings groups reflow into a responsive two-column grid to reduce scrolling. Save button pinned to the page header and repeated at the bottom.
Jun
2026
v0.3.14
Scheduled publishing, comments, RSS/sitemap, entry locking & email notifications
  • Scheduled publishing — set a publish_at date on any entry. A server-side scheduler auto-publishes and fires the build webhook. Also supports unpublish_at to revert published entries to draft at a future date.
  • Content comments — per-entry editorial comment thread directly in the editor. Post, resolve/unresolve, and delete comments. Stored in a _comments table, never mixed with entry data.
  • RSS feeds & XML sitemap/orbiter/rss/[collection].xml and /orbiter/sitemap.xml injected automatically by the integration. No configuration needed.
  • Schema export & import — download any collection's schema as JSON, re-import to another collection or pod. Export/Import buttons in the schema edit panel.
  • CSV import & export — bulk entry management. Export all entries as CSV, import to create or update by slug.
  • Entry locking — when you open an entry, the editor claims a lock. If another user is already editing, a warning banner appears. Lock expires after 90 s without a heartbeat.
  • Email notifications — configure SMTP in Settings. Get an email on publish and/or new comment. Powered by nodemailer, always async.
  • Required field validation — fields marked required in the schema block saves (non-autosave) until filled.
  • Image optimization — uploaded images are resized and compressed automatically via sharp. Max-width and quality configurable per pod in Settings.
May
2026
v0.3.9
Trash, activity log & draft preview
  • Trash / soft delete — deleted entries move to a recoverable Trash tab. Restore to draft or permanently delete. Bulk restore and bulk purge supported.
  • Activity log — every create, update, publish, unpublish, delete, and restore is recorded with the acting user and timestamp. Visible in the editor's meta panel.
  • Draft preview — generate a preview token in Settings → API and attach it to your preview URL. getPreviewEntry() in orbiter:collections reads any draft directly from the pod, bypassing the published-only snapshot.
  • Schema field drag-sort — reorder fields in the schema editor with a drag handle. Order is preserved in the stored schema.
  • Rate limiting — login endpoint is limited to 5 attempts per 15 minutes per IP. Returns 429 with a human-readable message.
  • TypeScript typesorbiter-env.d.ts is auto-generated at build time with per-collection interfaces and typed overloads for all query functions.
May
2026
v0.3.3
Singletons, drag-sort, editor blocks & version display
  • Singleton collections — mark a collection as singleton to skip the entries list and go straight to the one record. Good for site settings, about pages, or any single-document content.
  • Drag-to-sort entries — reorder entries manually with a drag handle. Order persists in the pod and is reflected in getCollection() output.
  • Callout blocks — type /note in the block picker to insert a tinted info/warning box inline with prose.
  • Table blocks — type /tbl for an editable 2×2 table. Tab to navigate cells, toolbar to add/remove rows and columns.
  • Boolean field — on/off toggle field type for schema definitions.
  • Preview URL per collection — set a URL template with {slug} in Schema; an ↗ Preview button appears in the editor topbar.
  • Version display — admin sidebar footer now shows Orbiter vX.Y.Z · pod vN so you always know what's running.
Apr
2026
v0.3.1
S3 backends, docs & auto-webhook
  • S3-compatible media backend — store uploads on Cloudflare R2, Backblaze B2, AWS S3, or any S3-compatible endpoint. Config via Settings → Media.
  • External media links — reference a Dropbox, Drive, or CDN URL directly without fetching the file. Third tab in the image picker.
  • Auto-publish webhook — fires automatically when an entry transitions from draft to published, no manual trigger needed.
  • Docs site — full reference at orbiter.sh/docs: quick start, collections, media, API, deployment, CLI.
May
2025
Editor
Images, Video & Cloud Import
  • Inline image blocks — float left, right, center, or full width. Text wraps naturally, travel-blog style.
  • Video embedding — paste a YouTube, Vimeo, or direct .mp4 URL. The editor auto-embeds in a responsive 16:9 player.
  • Cloud URL import — paste a share link from Dropbox, Google Drive, or OneDrive. The server fetches it and stores it in your pod. No CORS, no manual download.
  • Block picker/img and /vid shortcuts to insert media blocks from the keyboard.
Mar
2025
Themes
Three Themes & Glass Layout
  • Space — dark space station HUD, light solar command ice blue.
  • Zen — Japandi aesthetic: slate, mauve, moss, warm neutrals.
  • Catppuccin — Mocha (dark) and Latte (light) from the popular palette.
  • Glass layout — frosted panels, backdrop blur, animated gradient orbs. Ships as the default; classic grid still available.
Jan
2025
v0.2.0 → v0.2.2
Now on npm
  • Published to npmorbiter-core, orbiter-integration, orbiter-admin, orbiter-cli.
  • Block editor with live preview, autosave, version history, and draft/published toggle.
  • i18n — per-entry locale variants, getLocaleCollection(), locale fallback.
  • Relations — resolved at build time into full Entry objects.
  • WordPress importer, Git sync mode, JSON API, multi-user auth, PWA.

How it works

Your entire CMS lives next to your source code — in one file.

your-site/
├── astro.config.mjs
├── content.pod   ← your entire CMS
└── src/pages/
Step 1 — Start the admin
npm install @a83/orbiter-admin
ORBITER_POD=$(pwd)/content.pod npm start
Step 2 — Add the integration to astro.config.mjs
import orbiter from '@a83/orbiter-integration';

export default defineConfig({
  output: 'server',
  integrations: [orbiter({ pod: './content.pod' })],
});
Step 3 — Read content in your pages
import { getCollection } from 'orbiter:collections';

const posts = await getCollection('posts');

What's included

A full CMS admin — standalone on port 4322. The Astro integration handles content at build time via orbiter:collections.

One file. Everything.
Content, media, schema, users, sessions — all in a single POD (a SQLite database with a .pod extension). Copy it anywhere. Back it up with cp.
Astro-native
One line in astro.config.mjs gives you orbiter:collections — a Vite virtual module that snapshots your published content at build time. Zero runtime fetch.
Familiar content API
Read content with getCollection and getEntry — same shape as Astro's built-in content collections.
Content Layer loader
orbiterLoader() plugs directly into Astro's Content Layer API. Use astro:content with auto-generated Zod schemas, incremental builds, and hot reload when the pod changes.
Schema editor
Add or change fields without migrations. Export and import schemas as JSON to copy them between collections or pods.
Media library
Upload, browse, and manage files. Images are automatically resized and compressed on upload. Four storage backends: pod BLOB, local disk, GitHub CDN, or external URL.
Version history
Every save creates a snapshot, capped at 20 per entry. Restore any previous version with one click from the editor sidebar.
JSON API + RSS/Sitemap
GET /orbiter/api/[collection] — optional Bearer token. Plus auto-generated RSS 2.0 feeds and an XML sitemap. All injected, no config.
Git sync mode
orbiter unpack extracts media BLOBs to files, orbiter pack restores them. Commit your pod + media to Git — a GitHub Actions template is included for automatic rebuilds.
🗓
Scheduled publishing
Set a publish_at date on any entry. The server auto-publishes and fires the build webhook at the right time. Set unpublish_at to expire content.
💬
Editorial comments
Per-entry comment thread in the editor. Post, resolve, delete. Optional email notification on new comments via SMTP.
Command palette
⌘K fuzzy search across all content and navigation. Installable as a PWA on mobile and desktop.
👥
Multi-user & roles
Admin and editor roles. Entry locking warns when two editors open the same entry simultaneously. Manage users in the UI.
Multilingual (i18n)
Per-entry locale variants — same slug, separate locale columns. Configure locales in Settings, translate entries via locale tabs in the editor. getLocaleCollection() and getLocaleEntry() with automatic fallback.
Space Station mode
A distinct layout with a floating magnification dock, command palette (⌘K), vim keyboard navigation, HUD panel, notification center, zen mode, and a full mobile tab-bar. Three themes × two colour schemes.
Trash & restore
Deleted entries move to a recoverable Trash tab. Restore to draft or permanently delete. Bulk restore and bulk purge. Activity log records every action with actor and timestamp.
Draft preview
Generate a preview token in Settings → API. Attach it to your preview URL — getPreviewEntry() reads any draft directly from the pod, bypassing the published snapshot.
Form inbox
Receive contact and booking form submissions from your Astro site via POST /api/form/:formId. View, filter, reply by email, and mark as confirmed, rejected, or done — all from the admin UI.
Built-in SEO
Every entry has a built-in SEO panel — meta title, description, and OG image. No schema changes needed. Access via entry.seo.title, entry.seo.description, and entry.seo.ogImage.
FTP / FTPS deploy
Upload your Astro dist/ directly to any shared hosting via FTP or FTPS. Configure host, port, credentials, and remote path in Settings. One click to deploy — or trigger automatically after a build webhook.
Code snippets
Built-in snippet library under Tools → Snippets. Copy-paste Astro code for contact forms, booking forms, SEO <head>, image rendering, getCollection, ticket buttons, RSS, and sitemap — dynamically adapted to your collection names.
Desktop App — Mac &amp; Windows
Download the installer, double-click to launch. Pick a template (Blog, Portfolio, Business, Events) — the app creates collections and demo content automatically. No terminal, no Node.js, no npm.
WordPress importer
Export your WordPress site as WXR and import it directly in the admin. HTML body text converts to Markdown automatically. Post dates, categories, and slugs are preserved. No CLI, no scripts.
Entry locking
When two editors open the same entry simultaneously, a lock warning appears before any changes are made. 90-second lock with automatic heartbeat refresh. Prevents silent last-write-wins overwrites.
CLI
orbiter init scaffolds a new project with starter templates. orbiter status shows pod health. orbiter sync pushes/pulls via rsync. orbiter encrypt/decrypt wraps the pod in AES-256-GCM for git-safe storage.
Publish HTML
One-click static site generator. Choose a built-in theme (Orbit or Canvas), click Generate, download a ZIP with a complete website. Dark mode, responsive, OG tags, sitemap — no Astro or build tools needed.
No cloud. No lock-in. No compromise.

Your data.
No strings attached.

Every other CMS gives your content to a cloud. Orbiter gives it to you. A single POD — one SQLite file on your disk, in your repo, on your server. Copy it, encrypt it, email it. No account required. No monthly invoice. No vendor who can change pricing, shut down, or hold your data hostage.

📁
Backup in one command
cp content.pod backup.pod — that's your entire CMS. A 500-entry blog with images typically weighs under 50 MB.
✈️
Works completely offline
Run npm run dev on your laptop with no internet. Edit content on a plane. No API calls, no auth endpoints, no CDN.
🔍
Fully inspectable, always
Open your pod with any SQLite GUI. Run ad-hoc queries. No black box, no proprietary format, no data you can't read yourself.
⚖️
MIT License — genuinely free
Use it commercially, fork it, sell products built with it. No "open core" bait-and-switch. The full source ships with your project.
sqlite3 content.pod
# open your CMS like any other database
$ sqlite3 content.pod # list all tables
sqlite> .tables
_collections  _entries  _media  _users  _versions # inspect recent entries
sqlite> SELECT slug, status, updated_at
        FROM _entries ORDER BY updated_at DESC LIMIT 4;
my-first-post   published  2025-04-20
about-orbiter   published  2025-04-19
new-draft       draft      2025-04-18
hello-world     published  2025-04-15 # how many media files?
sqlite> SELECT COUNT(*) || ' files, ' ||
        ROUND(SUM(LENGTH(data))/1048576.0, 1) || ' MB'
        FROM _media;
47 files, 18.3 MB # version history — every save is a snapshot
sqlite> SELECT COUNT(*) FROM _versions;
312
Admin runs on any Node.js host
Railway Coolify Fly.io Render Hetzner Node.js GitHub Pages* Netlify*
* serverless platforms use Git sync mode — content is committed to the repo before each build
↓   Astro builds   →   FTP deploy   ↓
Publishes to any shared host via FTP
World4You Strato IONOS Hostinger All-Inkl Any FTP server
configure host, credentials & remote path in Settings → one click to deploy, or trigger automatically after each build

How Orbiter compares

Other CMS options for Astro — and where Orbiter fits in.

🪐 Orbiter Decap CMS Keystatic Tina CMS Payload CMS
Storage SQLite file Git Git / files Git + cloud Postgres / MongoDB
External service ✓ None GitHub OAuth required GitHub / local Tina Cloud (free tier) ✓ None
Setup npm install + 3 lines YAML config file Config file Config + dashboard Full backend setup
Astro support ✓ Native ~ Plugin ✓ Native ~ Plugin Manual
Media storage In pod (BLOBs) External CDN External CDN External CDN DB / S3
Version history ✓ Built-in Git history Git history Git history Custom / code
Schema editor UI ✓ Yes YAML only Config only Config only Code only
Offline admin ✓ Yes No ~ Local only No ✓ Yes
Backup cp content.pod git push git push Tina Cloud + git DB dump
Serverless deploy ✓ Git sync mode ✓ Git-native ✓ Git-native ✓ Git-native DB required
License MIT free MIT free MIT free MIT + paid tiers MIT free
Multilingual (i18n) ✓ Locale column No ~ Manual No ✓ Built-in
Scheduled publishing ✓ Built-in No No No ~ Plugin

Pricing

Orbiter is open source under the MIT License — free for personal and commercial use, forever. If it saves you time, consider supporting its development.

Open Source
Free forever
$0 / always
MIT License
  • Full source code on GitHub
  • Commercial use allowed
  • Modify and distribute freely
  • No attribution required
  • Self-hosted — your data, your server
  • All features included, no paywalls
  • Community support via GitHub Issues
Support
Buy us a coffee
one-time or recurring

Orbiter is free and stays free. If it saves you time or earns you money, consider supporting ongoing development — new features, bug fixes, and long-term maintenance.

  • Same MIT License (still free)
  • Help fund active development
  • Prioritized GitHub issue responses
  • Mention in README supporters list
  • Via Polar — any amount appreciated
Support Orbiter ☕
No account needed · secure payment via Polar

Frequently asked questions

Everything you need to know before getting started.

A POD is a standard SQLite database with a .pod extension. It contains all your content, media, users, and settings in one file. You can open it with any SQLite tool (TablePlus, DB Browser for SQLite, DBeaver) and inspect or query your content directly.
No. SQLite runs in-process alongside your Astro server. Nothing to provision, nothing to pay for, nothing to configure separately. The database is the file.
Yes, with a note: serverless platforms don't persist filesystem writes between function invocations. Your content is available at build time for static generation, but for editing you need a persistent Node.js server (VPS, Railway, Coolify). Netlify/Vercel are great for hosting the frontend — run the Orbiter admin on a persistent server.
cp content.pod backup.pod. That's it. Every entry, every media file, every schema definition, every user account — in one file. Schedule a cron job, sync to S3, commit it to git. Standard file tooling works.
Orbiter supports multiple users with admin and editor roles. Two people editing the same entry simultaneously uses last-write-wins semantics. Fine for teams of 1–5 people, not designed for large editorial teams editing in parallel.
GET /orbiter/api/[collection] returns all published entries as JSON. Supports optional Bearer token authentication. Works from any frontend, mobile app, or external service without extra setup.
Yes. Export your WordPress site as WXR (the standard WordPress XML export) and import it via the Orbiter admin. Text content, post dates, and categories are converted. HTML body text is transformed to Markdown automatically.
The Astro integration works with any output mode — it only provides orbiter:collections at build time. The admin runs as a separate server (@a83/orbiter-admin) independently of your Astro output mode.
Yes. Open content.pod with any SQLite GUI — TablePlus, DB Browser for SQLite, DBeaver, or the sqlite3 CLI. Tables are _collections, _entries, _media, _users, _sessions, and _versions.
Orbiter is at v0.3.78 — published to npm, actively maintained, and used in real projects. The API may evolve before v1.0. It's suitable for personal sites, client projects, and small teams. Check the GitHub issues for anything relevant to your use case.
MIT License. Use it for any project including commercial ones. Modify it, fork it, distribute it. No attribution required (though appreciated). The source is on GitHub and stays open source.

Honest tradeoffs

Orbiter is the right tool for small teams and content sites. Here's where it isn't.

Not for large media libraries
SQLite BLOB storage is convenient for content sites but not for thousands of high-res images. If your media library is in the gigabytes, this isn't the right tool.
Serverless requires extra steps
Netlify and Vercel don't persist filesystem writes between deploys. The GitHub sync mode works around this, but it adds steps. A VPS or Coolify gives you a better experience.
Built for small teams
Two people editing the same entry at the same moment will get last-write-wins. Fine for a team of 1–5. Not designed for large editorial teams working in parallel.
Claude Code · ChatGPT · Antigravity

Scaffold a full project with AI.

One prompt. A complete Astro blog with Orbiter CMS — collections, example content, all pages, and a working admin — built by your AI assistant from scratch.

Full project structure

BaseLayout, Header, PostCard components. Blog listing, post detail, and About page — all wired to Orbiter content.

Collections with example data

Posts, Authors, and Pages collections. Three seeded blog posts, an author, and an About page — ready to edit.

Working admin at localhost:4322

Login with admin / admin and start creating content immediately. Change schema, upload media, switch themes.

AI_SETUP.md — paste into any AI assistant
You are scaffolding a new Astro blog site using Orbiter CMS (https://orbiter.sh). Orbiter is a self-hosted CMS where all content, media, schema, and users live in a single SQLite database called a POD (.pod extension). No database server. No cloud dependency. Your task: set up a complete, working project from scratch — including a seed script that creates collections and example content, and Astro pages that consume the data. Follow every step below in order. Run commands as you go. Do not skip steps. ───────────────────────────────────────────── STEP 1 — Create the Astro project ───────────────────────────────────────────── STEP 2 — Install Orbiter packages + add npm scripts STEP 3 — Configure astro.config.mjs STEP 4 — Write seed.js (collections, posts, authors, pages, admin user) STEP 5 — Run the seed script STEP 6 — Create BaseLayout, Header, PostCard, and all pages STEP 7 — Start both dev servers STEP 8 — Verify everything works STEP 9 — Clean up [ + full file contents, project structure, and troubleshooting guide ]

From install to published content.

Three steps. No database. No cloud account. No configuration files.

1
Orbiter dashboard after first login
Create your pod, start the admin

Run npx @a83/orbiter-cli init my-site — it scaffolds a project, creates a .pod file with sample collections, and starts the admin. Open localhost:4322 and log in. Done.

2
Orbiter block editor with locale switcher tabs
Write content. In any language.

The block editor handles text, inline images, video, and all your schema fields. Locale tabs appear automatically when you configure multiple languages in Settings — same slug, independent content per locale.

3
Settings page with build webhook and API token
Publish. Rebuild. Deploy.

Set a build webhook URL in Settings. When you publish an entry, Orbiter fires it automatically — triggering your CI/CD on Railway, Netlify, or Vercel. Your static site rebuilds with fresh content.

Space Station mode.

A distinct layout for the admin — dark glassmorphism, floating magnification dock, command palette, vim keyboard navigation, notification center, HUD panel, zen mode, and a full mobile tab-bar. Switch in one click from Settings.

Orbiter Space Station mode — dark glassmorphism dashboard with floating dock
Dashboard — glass cards, stats sidebar, notes & to-do, floating dock
Entries list in Space Station mode
Entries — glass header, filter tabs
Settings in Space Station mode
Settings — glass groups, accent dock
Orbiter Space Station mode on mobile — bottom tab bar, responsive dashboard
Mobile-ready

The dock becomes a native-feeling bottom tab bar. Stats stack to a 2×2 grid. Cards resize to fit. Same content, any screen.

Floating dock ⌘K command palette Vim navigation Notification center HUD panel + drafts Zen mode Live build status 3 themes · 2 schemes Mobile tab bar Notes & to-do

Up and running in under 2 minutes.

One command scaffolds a new project with demo content — admin at localhost:4322, login with admin / admin.

New project
npx @a83/orbiter-cli init my-site
or try the full demo repo
git clone https://github.com/aeon022/orbiter.git
cd orbiter && npm install && npm run seed
ORBITER_POD=$(pwd)/apps/demo/demo.pod npm run dev --workspace=packages/admin
Like what you see?
Orbiter is free and open source. If it saves you time, consider supporting its development.
Support Orbiter ☕
Deploy to production
Built with Orbiter
techblog.abteilung83.at
Abteilung83 Tech Blog
Engineering articles on web architecture, Astro, SQLite, and open-source tooling — running on Orbiter since v0.1.
Astro · Orbiter · Railway
your-site.com
Your project here
Built something with Orbiter? Open an issue or a PR on GitHub — we'd love to feature it.
Built by
Abteilung83

Advanced Web Architecture & Digital Systems Engineering — Less Noise. Nice Data. No Bloat.

abteilung83.at →
Where we're going

One content source.
Two audiences.

The web is splitting — humans read stories, AI agents read structure. Orbiter is building for both with Dual Render: one POD, one build, two layers. Content for people and machines from a single source.

Explore the Vision → Dual Render ↗
./ab83_init --status
hash: 1e05c28873189e86dac9c28c6168548f7d566e7b
build: 28.06.26, 07:57