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

@geenius/waitlist

v0.16.1

Published

Geenius Waitlist — Self-hosted waitlist system for Convex apps (React + SolidJS)

Readme

@geenius/waitlist

FSL waitlist capture, referral loops, confirmation flows, and operator review surfaces for Geenius products.

Installation

pnpm add @geenius/waitlist

Import Examples

import { buildReferralUrl, createWaitlistEntry } from "@geenius/waitlist";
import { WaitlistLandingPage, WaitlistConfirmPage } from "@geenius/waitlist/react";
import { WaitlistLandingPage as CssWaitlistLandingPage } from "@geenius/waitlist/react-css";
import { WaitlistLandingPage as NativeWaitlistLandingPage } from "@geenius/waitlist/react-native";
import { createWaitlist, createReferral } from "@geenius/waitlist/solidjs";
import { WaitlistLandingPage as SolidCssWaitlistLandingPage } from "@geenius/waitlist/solidjs-css";
import { api, schema, waitlistTables } from "@geenius/waitlist/convex";

Usage

import { WaitlistLandingPage } from "@geenius/waitlist/react";
import { buildWaitlistStats } from "@geenius/waitlist";

const stats = buildWaitlistStats([]);

export function LaunchRoute() {
  return (
    <WaitlistLandingPage
      productName="Antigravity Alpha"
      productTagline="Referral-powered access for the next operator workspace."
      stats={stats}
      baseUrl="https://alpha.geenius.dev/waitlist"
    />
  );
}

React apps that need shared queue state can mount the provider and compose the operator surface from the same public subpath:

import { WaitlistAdminPage, WaitlistProvider } from "@geenius/waitlist/react";
import { createWaitlistEntry } from "@geenius/waitlist";

const entries = [
  createWaitlistEntry({
    email: "[email protected]",
    name: "Ada Lovelace",
  }),
];

export function AdminRoute() {
  return (
    <WaitlistProvider initialEntries={entries}>
      <WaitlistAdminPage entries={entries} />
    </WaitlistProvider>
  );
}

Package Surface

  • @geenius/waitlist exposes the framework-agnostic waitlist contract, including duplicate-safe entry creation and configuration-driven intake gates for signup caps and invite-only queues.
  • @geenius/waitlist/react and @geenius/waitlist/solidjs provide Tailwind-based UI surfaces.
  • @geenius/waitlist/react-css and @geenius/waitlist/solidjs-css provide standalone vanilla-CSS implementations with package-owned styles.css and waitlist.css assets.
  • @geenius/waitlist/react-native provides a self-contained React Native surface built with native primitives and the root shared waitlist contract.
  • @geenius/waitlist/convex exposes the Convex schema, generated API helpers, queries, and mutations.
  • @geenius/waitlist/convex/convex.config exposes SDK-free component identity metadata for host Convex projects.
  • @geenius/waitlist/neon exposes the Neon/Postgres provider factory, SQL client contract, and concrete migration statements.
  • @geenius/waitlist/cloudflareKV exposes the Cloudflare KV provider factory, namespace contract, key-prefix helpers, and cached stats TTL defaults.
  • @geenius/waitlist/memory exposes the deterministic in-process provider for tests, Storybook fixtures, and local demos. The subpath factory createMemoryWaitlistProvider() aliases the root shared createMemoryBackedWaitlistProvider().

Scoped v1 runtime code is self-contained for strings, notifications, emails, and UI primitives. Host apps can compose @geenius/i18n, @geenius/notifications, @geenius/emails, or @geenius/ui around these surfaces, but this package does not ship those runtime adapters yet.

Framework subpaths intentionally do not re-export the root shared contract. Import helpers and types from @geenius/waitlist, then import UI from the selected framework subpath. Framework prop types are exported with framework prefixes, such as ReactWaitlistFormProps and SolidWaitlistFormProps, so root shared prop contracts remain root-only.

Variant Status

The current Omega run scope is limited to the rows below. Deferred variants may remain in package.json exports for forward compatibility and currently resolve to the reference React or SolidJS surface as aliases, but they are not included in this run's build, type-check, Storybook, Playwright, a11y, visual, or perf matrix. Release readiness is determined by the command evidence in scorecard.yaml, not by the presence of a package folder.

| Variant | Status | Notes | | --- | --- | --- | | react | Scoped implementation | React 19 + Tailwind 4 surface. | | react-css | Scoped implementation | React 19 + standalone BEM CSS. Import @geenius/waitlist/react-css/styles.css. | | solidjs | Scoped implementation | SolidJS 1.9 + Tailwind 4 surface. | | solidjs-css | Scoped implementation | SolidJS 1.9 + standalone BEM CSS. Import @geenius/waitlist/solidjs-css/styles.css. | | react-native | Scoped native implementation | Self-contained React Native provider, hooks, components, and pages built with native primitives. | | react-shadcn, react-mui, react-ant, react-chakra, react-mantine, react-heroui, react-daisyui, solidjs-ark, solidjs-kobalte, solidjs-solidui | Deferred | Existing folders stay on disk with inScope: false and are filtered out by scripts/_variants.mjs. |

| Provider | Status | Notes | | --- | --- | --- | | convex | Scoped implementation | Reactive schema, queries, mutations, and generated API helpers. | | neon | Scoped implementation | Backend-owned Postgres adapter with migration SQL and injectable Neon-compatible client. | | cloudflareKV | Scoped implementation | Backend-owned KV adapter with entry, email, referral, and stats keys. | | memory | Scoped implementation | Deterministic in-process provider for tests and previews. |

Storybook

Local review apps are available for every in-scope UI variant:

STORYBOOK_VARIANT=react pnpm storybook
pnpm run test:storybook:build
pnpm run test:storybook

Testing

The PR-blocking gauntlet command is:

pnpm test:gauntlet

It runs source/app lint, packed publish checks, type-checking, unit/convention/export/dist/packed smoke tests, bundle budgets, supply-chain audit, license checks, and SBOM generation. The full pre-release replay command is:

pnpm test:all

That extends the gauntlet with Storybook build/test-runner, DB conformance and migrations, Playwright e2e, a11y, visual regression, perf smoke, aggregate coverage, and test:diff-coverage. scorecard.yaml separates commands verified during the current audit-fix wave from commands that must be replayed on a clean checkout before release.

Contributing tests

variants.json is the single source of truth for UI variants, DB providers, Storybook apps, e2e projects, coverage thresholds, and bundle budgets. Add a new variant there first, then add its package source and matching app/harness files.

Core gates:

pnpm run test:conventions
pnpm test:gauntlet
pnpm test:all
pnpm test:diff-coverage
pnpm test:visual --update-snapshots

Every packages/<sub>/ workspace must keep the TypeScript config trio: tsconfig.json, tsconfig.typecheck.json, and tsconfig.build.json. Same-workspace @geenius/waitlist-* dependencies use workspace:*; cross-package Geenius dependencies use link: paths relative to the consumer package.json.

License

FSL-1.1-Apache-2.0. See LICENSE.