status AdminWrapper is under active development — early access requests now open
Problem Modules How It Works Integrations Use Cases Security Pricing Request Early Access →
In development · Early access open

Stop rebuilding
your admin panel
from scratch.

AdminWrapper is a config-driven admin layer for SaaS products. Connect to your existing database, auth provider, and integrations — get user management, feature flags, billing, analytics, and support wired up in one place.

See all modules
MIT licensed Self-hosted or cloud TypeScript-first 9 planned modules
scroll to explore ↓
adminwrapper.config.ts
1// adminwrapper.config.ts
2import { defineConfig } from 'adminwrapper'
4export default defineConfig({
5 database: { adapter: 'postgres', url: process.env.DATABASE_URL },
6 auth: { provider: 'supabase', serviceKey: process.env.SUPABASE_KEY },
8 modules: {
9 users: { enabled: true },
10 flags: { enabled: true },
11 billing: { enabled: true, provider: 'stripe' },
12 support: { enabled: true, provider: 'intercom' },
13 audit: { enabled: true, retention: 90 },
14 },
16 roles: [
17 { name: 'superadmin', permissions: ['*'] },
18 { name: 'support', permissions: ['users.*', 'support.*'] },
19 { name: 'finance', permissions: ['billing.*'] },
20 ],
21})
3–6
// weeks typically spent building admin tooling
80%
// of admin panel surface area is identical across SaaS*
<30
// target minutes from config to running panel
9
// planned core modules

* based on analysis of common admin panel patterns across user management, auth, billing, analytics, flags, and audit logging

// target stack
Next.js
NestJS
Express
Fastify
TypeScript
JavaScript
Docker
Supabase
Railway
Render
Laravel planned
Django planned
The problem

Every team builds the same thing from scratch.

Admin panels are the most-rebuilt, least-celebrated part of every SaaS. Same modules, same integrations, wired up again and again by every team.

3–6 weeks lost per product

User search, ban flows, password resets, RBAC — built fresh every time. Zero competitive advantage, pure infrastructure toil that shipping teams can never get back.

engineering_waste.ts
🔌

Same integrations rewired constantly

Stripe, Intercom, Mixpanel, LaunchDarkly — every team independently builds and maintains the same connectors. The plumbing is identical. The effort is never shared.

integration_hell.ts
📋

No audit trail by default

Homegrown panels rarely log who did what, when, or from where. SOC 2 audits and incident postmortems become painful exercises in reconstruction after the fact.

compliance_gap.ts
🧰

Low-code tools still require work

Retool and Forest Admin are powerful but neither ships with actions pre-wired or integrations already connected. You're still building — just with a different UI on top.

retool_fatigue.ts
// adminwrapper · architecture AdminWrapper core · module registry users .module auth .module flags .module billing audit support analytics +3 // connector layer Stripe Supabase Intercom Mixpanel LaunchDarkly // your existing infrastructure your database pg / mongo / mysql your auth provider auth0 / supabase / clerk REST + Webhook API custom integrations

fig. 1 — module & connector architecture

Before vs after

What building an admin panel
actually costs.

The same product. Two timelines. One team uses AdminWrapper on day one. The other builds from scratch.

Without AdminWrapper
~6 weeks. 1 engineer. Still incomplete.
  • Week 1: Build user search, sort, and filter from scratch against your DB schema
  • Week 1: Implement role-based access with custom middleware and session checks
  • Week 2: Wire Stripe — invoices, plan changes, manual refund flows
  • Week 2: Connect Intercom to show ticket history next to user records
  • Week 3: Build password reset and email change with auth provider SDK
  • Week 3: Add feature flag UI — homegrown or bolted onto LaunchDarkly manually
  • Week 4: Implement audit logging — schema design, hooks, storage, search
  • Week 5–6: Bug fixes, permission edge cases, deploy pipeline, ongoing maintenance
With AdminWrapper
Config file. Running panel. Same day.
  • Write adminwrapper.config.ts — point at your DB, auth provider, and integrations
  • User search, sort, filter, ban, impersonate — available immediately
  • RBAC roles (superadmin, support, finance, analyst) — prebuilt templates
  • Stripe connected via env var — plan changes, refunds, invoices ready
  • Intercom panel embedded — full ticket history next to user record
  • Password reset and email change — connected to your auth provider
  • Feature flags with built-in engine or LaunchDarkly — toggle from the panel
  • Audit log — auto-enabled, every action captured, searchable and exportable
How it works

Config-driven.
Sidecar architecture.

AdminWrapper runs as an isolated sidecar process alongside your application. Zero changes to your existing codebase. Connect via a single config file pointing at your existing infrastructure.

01

Install the package

Works with any Node.js backend — Next.js, Express, Fastify, NestJS, or standalone. Node 18+ required.

npm install adminwrapper
02

Run the setup wizard

The CLI detects your stack, prompts for integrations, and writes adminwrapper.config.ts and your .env entries.

npx adminwrapper init
03

Start the dev server

AdminWrapper runs as a sidecar on port 3001. Zero changes to your app. Hot-reloads when config changes.

npx adminwrapper dev
04

Deploy to production

Ship with a single command. Integrations connect via environment variables. Works with Docker, Railway, Render, and bare VMs.

npx adminwrapper deploy
adminwrapper.config.tsTypeScript
import { defineConfig } from 'adminwrapper'

export default defineConfig({
  app: {
    name: 'My SaaS',
    url: 'https://app.mysaas.com',
  },

  database: {
    adapter: 'postgres',
    url: process.env.DATABASE_URL,
    userTable: 'users',
  },

  auth: {
    provider: 'supabase',
    serviceKey: process.env.SUPABASE_SERVICE_KEY,
  },

  modules: {
    users:       { enabled: true },
    auth:        { enabled: true },
    featureFlags: { enabled: true },
    billing: {
      enabled: true,
      // 'stripe' | 'paddle' | 'razorpay'
      provider: 'stripe',
      secretKey: process.env.STRIPE_SECRET_KEY,
    },
    support: {
      enabled: true,
      provider: 'intercom',
      token: process.env.INTERCOM_TOKEN,
    },
    analytics:  { enabled: true, provider: 'mixpanel' },
    auditLog:   { enabled: true, retention: 90 },
    notify:     { enabled: true, provider: 'sendgrid' },
  },

  roles: [
    { name: 'superadmin', permissions: ['*'] },
    { name: 'support',    permissions: ['users.read', 'users.reset', 'support.*'] },
    { name: 'finance',    permissions: ['billing.*'] },
    { name: 'analyst',    permissions: ['analytics.read'] },
  ],
})
Core modules

9 planned modules.
All prebuilt. All wired.

Every module ships with real actions — not just data views. Ban a user, flip a flag, issue a refund, reset a password. All from a single panel your whole team can use.

👤
users.module

Search, view, edit, impersonate, ban, delete. Email and username changes with full history.

searchimpersonatebanbulk-ops
🔐
auth.module

Password resets, email changes, MFA management, OAuth unlinking, session revocation.

reset-pwmfasessions
🚩
flags.module

Built-in engine plus LaunchDarkly connector. % rollouts, cohort targeting, kill switches.

% rolloutcohortskill-switch
📊
analytics.module

Funnels, retention, cohort analysis. Mixpanel, Segment, Amplitude pre-wired and ready.

mixpanelsegmentamplitude
💬
support.module

Ticket history, in-app messages, full user context alongside every conversation.

intercomzendeskhistory
💳
billing.module

Plan changes, refunds, invoice history, trial extensions. Stripe, Paddle, and Razorpay pre-wired.

stripepaddlerazorpayrefunds
📋
audit.module

Every admin action logged — actor, timestamp, IP, before/after values. Auto-enabled, always on.

soc2exportablesearchable
🔔
notify.module

Email, push, SMS to users or segments. SendGrid, Twilio, Firebase FCM integrated.

sendgridtwiliosegments
🛡️
rbac.module

Superadmin, support, finance, analyst role templates with fine-grained permission overrides.

rbaccustom-rolessso-groups
AdminWrapper · Users
👤
🔐
🚩
💳
💬
📊
📋
🔔
🛡️
Users 12,847 total
12.8k
total
11.2k
active
43
banned
JC
active
reset pw
impersonate
ban
SR
trial
reset pw
impersonate
ban
MB
active
reset pw
impersonate
ban
KP
banned
view log
unban
AL
trial
reset pw
impersonate
ban

fig. 2 — users.module panel preview

Technical model

The sidecar architecture
under the hood.

AdminWrapper connects to your existing infrastructure via adapters and exposes a unified admin interface. Nothing touches your application code.

// 01 · adapter layer
Schema-agnostic database adapter

Connects to your existing database via a typed adapter. Inspects your user table schema at startup and maps operations to your actual column names — no migration, no new tables, no schema changes. Works with PostgreSQL, MySQL, MongoDB, Supabase, and PlanetScale.

no migrationsschema inferenceread/write adapter
// 02 · auth bridge
Direct auth provider integration

Auth operations (password reset, email change, MFA revoke, session invalidation) execute directly against your auth provider's admin API using a service-level key. AdminWrapper never stores credentials — it proxies signed requests with full audit logging on every call.

service key authsigned requestszero credential storage
// 03 · connector protocol
Unified connector interface

Every integration implements the same typed Connector interface: read(), write(), and action(). The panel calls connectors at runtime — no data is synced, cached, or duplicated between AdminWrapper and your source systems.

typed interfaceno data synclive reads
// 04 · audit engine
Automatic action capture

Every write operation passes through audit middleware before execution. The record captures actor ID, session fingerprint, source IP, action type, target entity, before-state, after-state, and timestamp — stored in your own database. Exportable as JSON or CSV.

before/after stateown DB storagejson/csv export
flags.module

Ship features to
the right users,
not everyone at once.

The feature flag module ships with a built-in evaluation engine — no LaunchDarkly account required. Target by user ID, email domain, plan, cohort, or a random percentage of traffic.

Toggle flags from the panel without a code deploy. Flip a kill switch in seconds if something goes wrong in production.

Roll out to 5% of users, watch error rates, then expand to 50%
Target beta testers by email domain or custom cohort
Sync with LaunchDarkly, PostHog, or GrowthBook if you already use them
Every flag change automatically logged to the audit trail
feature_flags
+ new flag
new_dashboard_v2
24% of users · 3,089 sessions
24%
ai_autocomplete
Beta cohort only · 142 users
beta
legacy_csv_export
Disabled globally · kill switch active
off
bulk_user_actions
Enterprise plan users only · 891 seats
plan
new_onboarding_flow
Staging only · not in production
staging
// flag changes → audit.log
export csv
new_dashboard_v2 rollout 10% → 24%
2m ago
admin@co.com
legacy_csv_export disabled by kill switch
1h ago
ops@co.com
stripe_payment_links rolled out to 100%
3h ago
eng@co.com

fig. 3 — flags.module + audit.module · toggles are interactive

Integrations

Pre-wired.
Not just documented.

AdminWrapper ships with connectors already built — not docs telling you how to build them yourself. Connect via config file or environment variables. No plumbing code required.

// how connectors work at runtime
Your config
Sets the active provider for each module via a single key in adminwrapper.config.ts
Connector pkg
Loaded at runtime, implements the typed Connector interface, handles API auth internally
Panel action
User clicks "refund" → connector calls Stripe API directly → result shown → audit logged
No data is cached or synced. Every read is live from the source. Every write is audited. Your data never leaves its origin system.
// auth
Auth0
Supabase Auth
Clerk
NextAuth.js
Firebase Auth
// billing
Stripe
Paddle
Razorpay
Lemon Squeezy
// analytics
Mixpanel
Segment
Amplitude
PostHog
// support
Intercom
Zendesk
Freshdesk
Plain
// feature flags
LaunchDarkly
PostHog Flags
Flagsmith
Built-in engine
// database
PostgreSQL
PlanetScale
MongoDB
Supabase DB
// notifications
SendGrid
Twilio
Firebase FCM
Resend
// coming soon
Salesforce
HubSpot
Linear
Datadog
Use cases

Built for every
SaaS shape and size.

AdminWrapper isn't opinionated about your product shape. Whether you're a solo founder who needs a working admin panel by tomorrow, a B2B company managing enterprise orgs, or a compliance team that needs every action logged — the same modules serve all of it.

The role system adapts to your team structure. Your support agent gets read access and reset actions. Your finance team sees billing. Your superadmin sees everything. Configured in one file.

uc:01
Indie hackers & solo developers

Launch with a full admin panel on day one. Never rebuild user management for the third project in a row. The setup means you're back to building your actual product the same day.

users.moduleflags.modulebilling.module
uc:02
Early-stage startups

Give your support team tools from day one — password resets, account management, refund handling — without burning an engineering sprint on internal tooling that generates zero revenue.

support.moduleauth.modulebilling.module
uc:03
Growth teams & product managers

Run A/B tests, roll out features to specific cohorts, and flip flags without a code deploy. PMs control releases independently — engineering stays focused on building product.

flags.moduleanalytics.moduleusers.module
uc:04
Compliance & security teams

Every admin action auto-logged with timestamps, IPs, and actor IDs from day one. SOC 2 and GDPR audits become straightforward — no retroactive logging, no coverage gaps.

audit.modulerbac.module
uc:05
Marketplaces & multi-sided platforms

Manage buyers, sellers, and moderators with different permission levels. Handle disputes, refunds, and account reviews from a single unified panel across both sides of the market.

users.modulebilling.modulerbac.module
uc:06
B2B SaaS companies

Manage organisations as first-class entities. See feature adoption per org, upgrade or downgrade plans, and send targeted messages to accounts showing churn signals.

support.moduleanalytics.modulebilling.module
uc:07
Developer tools & API products

Monitor API usage per customer, manage rate limits, issue and revoke tokens — without building a custom developer dashboard from scratch alongside your actual product.

analytics.moduleauth.moduleusers.module
uc:08
Content platforms & communities

Moderate users at scale. One-click bans, username changes, trust level assignments, and warning systems — all prebuilt with a complete audit trail for every moderation decision.

users.moduleaudit.modulenotify.module
Competitive landscape

Why not just
use Retool?

Existing tools either require too much setup, cover only part of the admin surface area, or cost too much for early-stage teams. AdminWrapper is purpose-built for this specific problem.

vs. Retool

Retool is a low-code builder — you still build the admin panel yourself, just with a visual editor. It doesn't ship with modules prebuilt or integrations pre-wired. AdminWrapper gives you a working panel from a config file, not a drag-and-drop session.

vs. Forest Admin

Forest Admin generates UI from your database schema. It's the closest existing alternative but still requires schema-specific configuration, doesn't ship integrations pre-wired, and starts at $50+/month — too expensive for early-stage teams.

vs. building in-house

The real alternative is building it yourself — again. It takes 3–6 weeks of senior engineering time, misses features like audit logs and feature flags, and creates ongoing maintenance. AdminWrapper offloads that permanently.

FeatureAdminWrapperRetoolForest AdminIn-house
Working panel from config Yes Days Hours Weeks
Integrations pre-wired 20+~ Build~ Partial Scratch
Actions (not just views) Full~ DIY Yes~ If built
Audit log always on Always Manual Yes Rarely
Feature flag module Built in No No~ External
Self-hostable, MIT licensed MIT Cloud Cloud Yes
RBAC role templates Prebuilt~ DIY~ Custom Build
No per-seat pricing None $10+ $50+ N/A
Security model

We're asking for your
service keys.
Here's how we handle that.

AdminWrapper connects to your auth provider, database, and payment processor using service-level credentials. Here's exactly what happens — and doesn't happen — with them.

🔑

Credentials never leave your infra

API keys and service tokens are stored as environment variables on your server — never transmitted to AdminWrapper servers, never logged, never written to the config file that goes into version control. The .env file is gitignored by default on init.

🚫

Zero data retention

AdminWrapper is a sidecar — every read is live from your source, every write goes directly to your destination. No user records, payment data, or event data is cached. If you remove AdminWrapper, nothing needs to be migrated or deleted.

🛡️

Principle of least privilege

The setup wizard requests only the minimum scopes each integration requires. Stripe read-only for invoice viewing, Stripe write only if billing actions are enabled. Each connector documents exactly which permissions it needs and why.

🔒

Admin access is authenticated

AdminWrapper ships with its own auth layer. Admins log in via SSO (Google, GitHub) or email magic link. Sessions are short-lived. Sensitive actions (ban, delete, refund) require re-authentication or MFA confirmation per session.

📋

Every action is audited

There is no way to perform a write operation in AdminWrapper without it being logged. The audit trail is append-only, stored in your own database, and cannot be disabled. If an admin account is compromised, the full blast radius is reconstructable.

🌐

Network isolation by design

AdminWrapper runs on a separate port (default: 3001) and can be placed behind an internal VPN or IP allowlist with a single config flag. The panel is designed to never be on the public internet.

// responsible disclosure
Found a vulnerability?

We take security reports seriously. Use the contact form below to report a vulnerability and we'll respond within 24 hours.

📄
SOC 2 Type II
In progress · Enterprise tier
🔐
MIT licensed
Full source — audit it yourself
🗄️
Your data, your database
Audit log stored in your infra, not ours
Product requirements

Architecture &
design principles.

The technical spec that defines what AdminWrapper must be, how it behaves, and what's explicitly out of scope for v1.

// stack

TypeScript monorepo. Node 18+. Prisma-compatible adapter layer. Fastify under the hood. Runs as a standalone sidecar — no framework coupling.

// deployment

Runs anywhere Node runs. Ships as a Docker image. Deploy to Railway, Render, Fly.io, or bare EC2. One env file. One command.

// extensibility

Every module is a plugin. Every integration is a connector package. Override any default behaviour through the config file.

// design principles

  • Actions first — every module ships with actionable ops, not just read views
  • Audit-by-default — every write logged always, no opt-in required
  • Composable — enable any subset of modules, disable the rest
  • Bring your own DB — zero vendor lock-in on the data layer
  • TypeScript-first SDK with full end-to-end type safety
  • Open core — MIT self-hosted + paid managed Cloud tier

// technical requirements

  • Config-file driven integration setup (YAML or ENV)
  • REST + webhook interface for custom integrations
  • Role-based API keys for programmatic access
  • PostgreSQL-compatible audit log storage
  • Embedded feature flag engine — no external service required
  • SSO via SAML 2.0 and OIDC (paid Cloud tier)
  • Sub-200ms p95 on all panel interactions
  • Supports 10M+ user records with full pagination

// out of scope (v1)

  • Drag-and-drop custom panel builder
  • Native mobile admin application
  • Real-time session replay or user monitoring
  • Two-way CRM sync (Salesforce, HubSpot)
  • AI-powered anomaly detection (Phase 5)
  • Native multi-tenant org hierarchy
  • GraphQL API (REST only in v1)
  • Non-Node.js backends (v1 is Node-first)
Pricing

Open source at the core.
Cloud for teams.

Self-host it free, forever. Upgrade for managed hosting, SSO, and enterprise compliance. No per-seat pricing — ever.

Open Source
Free forever

Self-hosted. MIT license. Full source. Every module, every connector, no restrictions on usage or team size.

  • All 9 core modules
  • All 20+ pre-built connectors
  • Self-hosted on your infrastructure
  • Unlimited users & admin seats
  • Audit log (30-day retention)
  • Full TypeScript SDK
// coming soon
Cloud
$49 / month

Managed hosting, zero ops. For teams that want to move fast without maintaining self-hosted infrastructure.

  • Everything in Open Source
  • Managed hosting & auto-updates
  • Custom domain & white-label branding
  • Email + chat support
  • 90-day audit log retention
  • SSO (Google, GitHub, SAML)
  • Advanced analytics dashboard
  • Uptime monitoring & alerts
Enterprise
Custom pricing

For products with compliance requirements, dedicated SLAs, and bespoke integration needs at scale.

  • Everything in Cloud
  • SAML 2.0 & OIDC SSO
  • Unlimited audit log retention
  • Custom connector development
  • 99.9% uptime SLA
  • Dedicated support engineer
  • SOC 2 compliance package
  • On-premises deployment option

Is there per-seat pricing?

No. AdminWrapper is priced per installation, not per admin user. Add as many team members as you need — support agents, engineers, finance — no extra charge.

What happens to my data?

AdminWrapper is a sidecar — it reads from and writes to your own infrastructure. We never store your user data. The audit log lives in your database. You own everything.

Can I self-host everything?

Yes. The open-source version includes all core modules and connectors. SSO, managed hosting, and SLAs are Cloud and Enterprise tier features. The MIT license lets you do whatever you want with the source.

When will Cloud be available?

Cloud hosting is planned for Phase 3 of the roadmap (~Q4 2026). Join the waitlist via the early access form and we'll notify you when it launches.

Roadmap

Five phases.
Each one shippable.

Every phase ships something useful on its own. The goal isn't feature completeness — it's making each release the thing you actually need right now.

phase:01 · current focus
Core panel — user management & auth

The foundational modules every SaaS needs. Connect your DB, get a working panel with search, ban, impersonate, and auth reset. The audit log is on from the first action.

users.moduleauth.modulerbac.moduleaudit.moduleAuth0Supabase
phase:02
Billing, support, and analytics modules

Expand with the integrations teams waste the most time rebuilding. Stripe, Intercom, Mixpanel, and Razorpay — wired up, not just documented.

billing.modulesupport.moduleanalytics.modulenotify.module
phase:03
Built-in flag engine and Cloud hosting

The embedded feature flag engine — no external service required. Cloud managed hosting tier launches for teams who don't want to self-host.

flags.moduleCloud hostingCustom branding
phase:04
Enterprise — compliance, SSO, connector registry

SOC 2 tooling, SAML SSO, and a connector registry enabling third-party integrations beyond the core set.

SAML 2.0 SSOSOC 2Connector registryMulti-org
phase:05
Intelligence layer

AI-powered layer on top — unusual admin behaviour flagged automatically, at-risk accounts surfaced, natural language search across your user base.

Anomaly detectionChurn signalsNL search

// current status

AdminWrapper is in active development. Phase 1 (core user management, auth, RBAC, and audit modules) is the current focus. Early access requests are open for design partners who want to use it against real data and shape the product.

~8 wks

// phase cycle target

From scoped spec to production-ready release. Fast enough to stay ahead of the feedback loop, slow enough to ship things that actually work without edge-case landmines.

// design partner programme

We're looking for a small cohort of teams to use AdminWrapper against real production data during development. In exchange you get direct input on priorities, early access, and a seat on the product decision loop. Request access →

MIT

// always open source

The core will always be MIT licensed and self-hostable. Paid features are operational — managed hosting, SLAs, enterprise SSO — not product features locked behind a paywall.

The admin panel you never have to build again.

AdminWrapper is under active development. Request early access to be part of the first design partner cohort and shape the product.

// MIT licensed · self-hosted or cloud · Node 18+ · TypeScript-first

Config-driven setup
Point at your existing database, auth provider, and integrations. AdminWrapper connects to your stack — your stack doesn't change for AdminWrapper.
🔓
No lock-in. Ever.
Your data stays in your database. Your integrations stay in your accounts. AdminWrapper is a layer on top — remove it any time with zero migration required.
🛡️
Audit trail from day zero
Every action logged automatically from the first deploy. SOC 2 audits, GDPR requests, and incident postmortems covered before you even need them.
🧩
Modular by design
Enable only the modules you need. A solo founder might enable just users, auth, and billing. A larger team enables everything. Same config, same setup time.