MemberPod

Free to start

Members‑only pages.
One line of code.

Add sign-in to the site you already have. No new site, no new host, nothing to move.

yoursite.com/members

Members' corner

Sign in to read on Continue with GoogleContinue with GitHubEmail me a code
Signed in. Welcome back.

Two steps. Your site stays exactly where it is.

Step one

Add one line of code. That's the install.

No new site, no new host, nothing to move.

<script src="…/memberpod.js" defer></script>

Step two

Your visitor signs in. The page opens.

With Google, GitHub or a code we email them. There is no password to forget.

GoogleGitHubEmail code

One more thing

Soon, AI assistants sign in too.

The agents your members use will sign in the same way, and open only what their person may.

Coming after launch

Questions people ask

Do I have to move my website?

No. You add one line of code to the site you have.

Are the locked pages really locked?

Yes. The check happens before the page is sent, so a locked page is not simply hidden by the page itself.

Does it work with MemberPress?

It speaks memberships the same way: plans and access rules. A WordPress membership site and a simple site can share the same members.

What does it cost?

It is free to start. We have not opened it up yet, so there are no prices to show.

The code

Three examples, from one line on a plain site to React.

One script tag

Add one script tag. That's the install. The sign-in button and the member's menu go wherever you place them.

<script src="https://js.memberpod.ai/v1.0.0/doorman.js"
        integrity="sha384-…"
        crossorigin="anonymous" defer></script>

<!-- then, wherever you want them: -->
<button data-doorman="sign-in">Sign in</button>
<div data-doorman="user-button"></div>

A members-only page

The check happens before the page is sent, so a locked page is not simply hidden by the page itself.

"members": {
  "app": "app_…",
  "issuer": "https://auth.memberpod.ai",
  "rules": [
    {
      "pattern": "/members/**",
      "require": "signed-in"
    },
    {
      "pattern": "/members/gold/**",
      "require": { "plans": ["gold"] }
    }
  ]
}

React

The same sign-in in a React app: what signed-out and signed-in visitors see.

import {
  DoormanProvider,
  SignedIn,
  SignedOut,
  SignInButton,
  UserButton,
} from "@doorman/react";

export default function App() {
  return (
    <DoormanProvider mount="/api/doorman">
      <SignedOut>
        <SignInButton />
      </SignedOut>
      <SignedIn>
        <UserButton />
      </SignedIn>
    </DoormanProvider>
  );
}