Realmdrop Core · Identity Platform

AuthRealm v1.0

One login. Every product. Total control.

AuthRealm is the identity layer behind a growing family of live products. It gives your users one secure account across every site you build — and gives you a modern, scope-based permission system to decide exactly what each person can do.

The auth platform we built for ourselves, hardened in production, and now run everything on.

Why AuthRealm

Identity and access, solved — once, for everything you build.

One account, every product

A single AuthRealm identity spans all of your apps. Users sign in once and carry their account from one product to the next — no separate logins, no duplicate passwords, no re-registration. Each product sees only the roles and permissions that belong to it.

Security that's invisible until you need it

Short-lived access tokens, automatically rotating refresh tokens, server-side revocation, hashed passwords and tokens, rate-limited sign-in, and “log me out everywhere” in one call. The hard parts of auth are handled so your product doesn't have to.

Permissions as fine as you want them

AuthRealm uses scopes — small, named permissions like blogs:write or events:read. Bundle them into roles, hand roles to people, and every token carries exactly what its holder is allowed to do. Nobody gets more than they need.

Modular by design

Every product turns on only the features it uses — blogs, events, services, team, portfolio, testimonials, FAQs, RSVP-style flows, and more. One platform flexes to fit a wedding RSVP site and a storefront equally well.

Built for automation

Personal Access Tokens let a user mint a scoped credential for a bot, script, or integration — without ever sharing a password. Tokens can be named, scoped, rotated, and revoked at will.

Powering real products

Not a demo. It runs in production today.

Whitcomb House

A live, members-aware web product running on AuthRealm.

Fiza & Zaim — Wedding RSVP

Guest sign-in and RSVP flows, secured end to end.

Blossom Ragdolls

A boutique cattery site with managed content and access.

Plantaerium.com

A plant-focused product with role-based content control.

Four very different products. One auth platform underneath all of them.

How people use it

Plain REST, predictable JSON.

The examples below show AuthRealm's current API. Version 2.0 introduces redirect-based single sign-on (OAuth 2.0 / OpenID Connect), where the password step moves to AuthRealm's own hosted login — see AuthRealm 2.0.

Sign in once, get exactly the right access

When a user signs in, AuthRealm returns a token tailored to one product context — who they are, what role they hold, and the precise scopes they're allowed.

Request
POST /authRealm/login
Content-Type: application/json

{
  "email": "guest@example.com",
  "password": "SecurePassword123!"
}
Response
{
  "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refreshToken": "rotating-refresh-token",
  "expiresIn": 900,
  "roles": ["ContentEditor"],
  "scope": "blogs:read blogs:write events:read"
}

Belong to more than one product? Each login stays in its lane.

A single account can span multiple products — but every login is bound to one product at a time, and the token it issues is scoped to just that context. There's no accidental cross-over, and one product never learns which others a person belongs to. Sign in to a specific workspace, and get back a token scoped to exactly that product:

Choosing among your workspaces happens on AuthRealm itself — never by handing a product the list of the others. In 2.0, that selection moves into the hosted single sign-on screen.

Request
{ "email": "guest@example.com", "password": "…", "tenantId": "plantaerium-workspace-id" }
Response — scoped to that one product, nothing else
{ "accessToken": "eyJhbGc…", "tenantId": "plantaerium-workspace-id", "roles": ["TenantAdmin"] }

Stay signed in safely

Access tokens are short-lived by design. When one expires, the app silently exchanges the refresh token for a fresh pair — and the old refresh token is invalidated on the spot, so a stolen token can't be reused.

Request
POST /authRealm/refresh
Content-Type: application/json

{ "refreshToken": "rotating-refresh-token" }

Log out — here, or everywhere

Sign out of one session, or revoke every active session for the account in a single call.

Request
POST /authRealm/logout
Content-Type: application/json

{ "refreshToken": "rotating-refresh-token", "all": true }

Forgot a password? No information leaks.

Password reset always responds the same way, whether or not the email exists — so AuthRealm never reveals who has an account. Reset links are time-limited.

Request
POST /authRealm/forgotPassword
Content-Type: application/json

{ "email": "guest@example.com" }
Response
{ "message": "If an account exists with this email, a password reset link has been sent" }

What a product can see about its people

Read your own membership, always gated by scopes.

Who am I?

Any signed-in user can read their own profile at GET /v1/tenant/me.

Which features are live here?

Discover exactly what this product has enabled — and the scopes each feature unlocks.

Who's on the team?

List members, but only with the users:read scope. Permission is always enforced, never assumed.

Request
GET /v1/tenant/features
Authorization: Bearer eyJhbGc...
Response
{
  "features": [
    { "featureKey": "blogs",  "isEnabled": true, "scopes": ["blogs:read", "blogs:write"] },
    { "featureKey": "events", "isEnabled": true, "scopes": ["events:read"] }
  ]
}

Tokens for bots, scripts & integrations

Mint a scoped credential — no password sharing, ever.

A user can mint a Personal Access Token scoped to no more than they themselves can do — then use it like any other bearer token.

The plaintext token is shown once, then stored only as a hash — so it can never be read back, even by us.

Tokens are fully self-service: list them, rotate the secret if one leaks, or revoke instantly. A revoked token stops working on its very next request.

Request
POST /v1/me/tokens
Authorization: Bearer eyJhbGc...
Content-Type: application/json

{
  "name": "nightly-content-sync",
  "scopes": ["blogs:read", "events:read"],
  "expiresInDays": 90
}
Response — shown once
{
  "name": "nightly-content-sync",
  "token": "pat_9f8a7b6c5d4e3f2a1b0c...",
  "scopes": ["blogs:read", "events:read"],
  "expiresAt": "2026-09-06T00:00:00Z"
}

Security, by default

The safe path is the only path.

Rotating refresh tokens

Every refresh invalidates the old token — replay attacks have nothing to reuse.

Hashed everything

Passwords and tokens are stored as hashes, never plaintext.

No account enumeration

Login and password-reset responses never reveal whether an email exists.

Rate-limited sign-in

Repeated attempts are throttled per source to blunt brute-force attacks.

Scope-enforced access

Every protected call checks the caller's scopes — least privilege is the default.

Least-privilege tokens

A Personal Access Token can never grant more than its creator already holds.

One token, one context

Each access token represents exactly one product — no ambient cross-product authority.

Built on a clean, documented API

Plain REST, one consistent error shape.

Every endpoint is described by an OpenAPI / Swagger specification, so the whole surface is explorable and importable into Postman, Insomnia, or your client of choice — interactive docs, generated clients, and instant try-it-out, straight from the spec.

Consistent error shape
{ "error": "invalid_credentials", "message": "Invalid email or password" }

Where it's headed

AuthRealm 2.0

From the engine behind our products to a platform you can build on.

AuthRealm today is our in-house identity platform: the engine we run our own products on, hardened by real production use across four very different sites.

Version 2.0 opens it up — turning AuthRealm from the system behind our products into a platform anyone can build on. A true, sellable identity service.

Single sign-on, built on open standards

Redirect-based login using OAuth 2.0 and OpenID Connect — a user's password is only ever entered on AuthRealm itself, never seen by the products that rely on it. One trusted front door for every app.

Per-app credentials, isolated by design

Every product gets its own scoped keys, and a login is bound to the app that started it. A session or credential issued to one product can never reach another product's data — isolation is enforced by the platform, not by trust.

Self-serve product onboarding

Register a new product, get your keys, and integrate in minutes — the same auth foundation we use, available to you.

First-class developer experience

Hosted docs, drop-in client libraries, and the same clean API and Swagger surface we ship today.

The foundation — multi-product identity, scoped permissions, rotating tokens, automation-ready PATs — is already here and proven. 2.0 is about putting it in your hands.

AuthRealm is the secure, scope-based identity platform that powers our products today — and, with 2.0, becomes one you can build on too.