npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@a83/orbiter-admin

v0.3.14

Published

Standalone admin server for Orbiter CMS

Readme

@a83/orbiter-admin

Standalone admin server for Orbiter CMS — a self-contained Hono HTTP server that reads and writes a .pod file.

npm License: MIT


Orbiter stores everything — content, media, schema, users — in a single .pod file (SQLite). This package is the admin interface: a Hono HTTP server that runs on its own port, independent from your Astro site.

content.pod  ←  shared file
     ↑                       ↑
@a83/orbiter-admin      @a83/orbiter-integration
writes content           reads at Astro build time
port 4322                your public site

Run the admin on a VPS or a separate service. The Astro site can be deployed anywhere — Netlify, Vercel, static hosting — as long as it can reach the same .pod file (same server, shared volume, or periodic rsync).


Install

npm install @a83/orbiter-admin

Requires Node.js 20+.


Start

ORBITER_POD=/absolute/path/to/content.pod npx @a83/orbiter-admin

Or add to package.json:

{
  "scripts": {
    "admin": "orbiter-admin"
  },
  "dependencies": {
    "@a83/orbiter-admin": "latest"
  }
}
ORBITER_POD=/absolute/path/to/content.pod npm run admin

Opens at http://localhost:4322 — redirects to /login.html.

Use an absolute path for ORBITER_POD. The server changes its working directory internally, so relative paths resolve incorrectly.


Demo (from the monorepo)

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

Login: admin / admin


Environment variables

| Variable | Required | Default | Description | |-----------------|----------|---------|-------------| | ORBITER_POD | yes | — | Absolute path to the .pod file | | PORT | no | 4322 | HTTP port | | ADMIN_ORIGIN | no | * | Allowed CORS origins (comma-separated) |


What's inside

Dashboard

Entry counts per collection, recently updated entries, persistent scratchpad + to-do list, build webhook status and manual trigger.

Entry editor

All schema fields rendered as inputs. Autosave, version history with restore, draft/published toggle.

Rich-media block editor:

  • Inline image blocks — float left, right, center, or full width; text wraps naturally
  • Video blocks — paste a YouTube, Vimeo, Wistia, or direct .mp4/.webm URL; renders as responsive 16:9 embed
  • / block picker — type /img or /vid to insert
  • Relation picker — pick entries from another collection

Media picker — three tabs:

  • Library — browse all uploaded files
  • From URL — paste a Dropbox, Google Drive, OneDrive, or any public URL; Orbiter fetches and stores the file server-side (bypasses CORS)
  • External link — paste a URL to store a reference without downloading; great for Cloudinary, hosted assets, or large files you don't want to copy

Media library

Upload, browse, and manage files. Images, video, PDF, any file type. Folder categories, type filter, inline preview, copy URL, alt text. Configurable backend (see below).

Schema editor

Add, reorder, and remove fields on any collection. Changes take effect immediately — no migration or restart needed.

| Field type | Input | |------------|-------| | string | Single-line text | | richtext | Block editor | | number | Numeric | | url / email | With validation | | date / datetime | Date picker | | select | Dropdown | | array | Tag input | | media | Media library picker | | relation | Entry picker (cross-collection) |

Settings

Site name, URL, locale, build webhook URL, media backend, GitHub sync, public API token, theme.

Users

Create and manage admin/editor accounts (admin role only). Roles:

| Feature | editor | admin | |---------|--------|-------| | Create / edit / delete entries | ✅ | ✅ | | Manage media | ✅ | ✅ | | Edit schema | ✅ | ✅ | | Site settings | ✅ | ✅ | | Manage users | ❌ | ✅ |

Import

WordPress WXR importer — upload the .xml export from WordPress Tools → Export; Orbiter converts posts, pages, categories, tags, and featured images.


Build webhook

Configure a webhook URL in Settings → Build. Orbiter fires a POST to it:

  • Automatically — whenever an entry transitions from draft to published
  • Manually — via the Trigger build button on the dashboard

Works with Netlify build hooks, Vercel deploy hooks, and GitHub Actions workflow_dispatch.


Media backends

Configure in Settings → Media storage. No restart required — stored in the pod.

| Backend | Where files go | Best for | |---------|---------------|----------| | blob | SQLite BLOB in the .pod file (default) | Small–medium sites | | local | Directory on the server (media.local_path) | Self-hosted VPS with persistent disk | | github | GitHub Contents API → jsDelivr CDN | Open-source projects, free global CDN | | External link | URL stored, nothing fetched | Dropbox, Drive, Cloudinary, any public URL |

For the GitHub backend, files are served from cdn.jsdelivr.net/gh/owner/repo@branch/path — no egress cost, cached globally. Configure repo, branch, directory, and token in Settings.

For External links, use the External link tab in the image picker. Orbiter makes a HEAD request to detect mime type, then stores only the URL. /orbiter/media/[id] redirects — no change needed in templates.


Themes

Three themes × two schemes (dark/light) × two layouts (classic/glass). Switchable live — preference saved to localStorage.

| Theme | Dark | Light | |-------|------|-------| | Space | Space station HUD — cyan + electric blue | Solar Command — ice blue | | Zen | Japandi — slate, mauve, moss | Japandi light | | Catppuccin | Mocha | Latte |

Glass layout (default) — frosted panels, backdrop blur, animated gradient orbs. Classic grid also available.


Health check

curl http://localhost:4322/health
# {"ok":true,"pod":"/absolute/path/to/content.pod"}

Docker

FROM node:20-alpine
WORKDIR /app
RUN npm install @a83/orbiter-admin
EXPOSE 4322
CMD ["node", "node_modules/@a83/orbiter-admin/src/server.js"]
docker run -p 4322:4322 \
  -e ORBITER_POD=/data/content.pod \
  -v $(pwd)/content.pod:/data/content.pod \
  my-orbiter-admin

Part of Orbiter

| Package | Description | |---------|-------------| | @a83/orbiter-core | SQLite engine, pod management, auth, media backends | | @a83/orbiter-admin | This package — standalone admin server | | @a83/orbiter-integration | Astro integration, orbiter:collections virtual module | | @a83/orbiter-cli | orbiter init, add-user, export, pack, unpack |

orbiter.sh · MIT · github.com/aeon022/orbiter