type: decision
status: active
timestamp: 2026-06-21
tags: [decision, app, omni-post, omni-publish, admin-dashboard, auth-gated]

omni-post-app shape — admin dashboard for the omni-publish package

omni-post.oriz.in wraps @chirag127/omni-publish with admin dashboard. /admin shows the pending GH Issues drafts queue, cross-post history per platform, retry-per-platform controls, and edit-before-publish UI. Public root (/) is a read-only 'where I post' catalog. /admin is Firebase Auth + admin-email allowlist gated.

omni-post-app shape

Two surfaces, one app

omni-post.oriz.in/ — public

Read-only catalog. “Where I post” list: every channel the oriz family auto-publishes to (dev.to / Hashnode / Bluesky / Mastodon / Threads / Medium / X / Reddit / LinkedIn / Substack). One card per channel: handle, last-post timestamp, post count, profile URL. Useful for readers who want to follow on their preferred platform.

omni-post.oriz.in/admin — auth-gated dashboard

PanelWhat it does
Pending drafts queueReads GH Issues from chirag127/oriz-drafts (per [[decisions/compute/drafts-queue-host]]); lists by label platform:*
Cross-post historyPer platform: last N posts, success/failure status, response URLs
Retry per platformManual re-fire of a failed adapter (after rate-limit cache cleared)
Edit-before-publish UIFor drafts (manual channels): rewrite copy, attach image, mark “posted” ? closes the GH issue

Auth

/admin requires Firebase Auth sign-in + admin-email allowlist. Allowlist is a constant in src/lib/admins.ts (single source: the user’s primary email + one backup). No multi-tenant — this is a single-user tool.

Wraps @chirag127/omni-publish

The app is a UI shell; all platform logic lives in the package. The app calls the package’s adapter functions for retry and history-fetch.

Why an app at all (not just CLI)

The package alone covers automated publishing. The dashboard exists for:

Cross-refs


Edit on GitHub · Back to index