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/docs

v0.17.0

Published

Geenius Docs — Provider-based documentation primitives and Storybook review apps for React, SolidJS, and Convex.

Readme

@geenius/docs

In-app documentation engine for Geenius products: docs index, MDX page rendering, search, table of contents, breadcrumbs, version selector, admin page shells, and content-source providers.

This support pass validates the scoped launch run: react, react-css, solidjs, solidjs-css, react-native, and the four DB providers convex, neon, cloudflareKV, and memory. Deferred web library variants are intentionally absent from the package export map until their launch pass.

Commercial software. See LICENSE. PRD: .docs/PRDS/packages/PACKAGE_DOCS_PRD.md · Package docs: .docs/DOCS/PACKAGES/DOCS.md

Install

pnpm add @geenius/docs

Add the framework peers you actually consume:

pnpm add react react-dom              # for /react and /react-css
pnpm add solid-js                     # for /solidjs and /solidjs-css
pnpm add convex                       # for /convex
pnpm add @neondatabase/serverless     # for /neon

Import surface (V2)

The root @geenius/docs is the only entry for shared types, errors, and utilities. Framework subpaths expose runtime code only.

// Shared (framework-agnostic)
import {
  configureDocs,
  extractToc,
  searchDocs,
  buildBreadcrumbs,
  DocsProviderError,
  AstroDocsProvider,
  InternalDocsProvider,
} from '@geenius/docs'
import type { DocPage, DocSection, SearchResult, TocItem } from '@geenius/docs'

// React (Tailwind + Geenius UI)
import { DocsProvider, DocsLayout, DocPage, useDocs, useDocSearch } from '@geenius/docs/react'

// React with vanilla CSS
import '@geenius/docs/react-css/styles.css'
import { DocsProvider as DocsProviderCss, DocsLayout as DocsLayoutCss } from '@geenius/docs/react-css'

// SolidJS
import { DocsProvider as SolidDocs, createDocs } from '@geenius/docs/solidjs'
import '@geenius/docs/solidjs-css/styles.css'

// React Native
import { DocsProvider as NativeDocsProvider, DocsLayout as NativeDocsLayout } from '@geenius/docs/react-native'

// DB providers
import { docsTables, listSections, getFullTree, createConvexDocsProvider } from '@geenius/docs/convex'
import { createNeonDocsRepository } from '@geenius/docs/neon'
import { createCloudflareKVDocsProvider } from '@geenius/docs/cloudflareKV'
import { createMemoryDocsProvider } from '@geenius/docs/memory'

No ./shared or ./shared/providers public subpaths are exported. Provider adapters live on the root @geenius/docs export.

Quickstart

import { useCallback } from 'react'
import { buildDocsIndex, searchDocs } from '@geenius/docs'
import { DocsProvider, DocsLayout, DocPage, useDocs, useDocSearch } from '@geenius/docs/react'
import type { DocPage as DocPageT, DocSection, SearchResult } from '@geenius/docs'

const tree: (DocSection & { pages: DocPageT[]; pageCount: number })[] = [
  {
    id: 'getting-started',
    title: 'Getting Started',
    slug: 'getting-started',
    order: 0,
    access: 'public',
    children: [],
    pageCount: 1,
    pages: [
      {
        id: 'intro',
        title: 'Introduction',
        slug: 'introduction',
        content: '# Introduction\n\nWelcome to Geenius Docs.',
        sectionId: 'getting-started',
        order: 0,
        author: { name: 'Mehdi Nabhani' },
        access: 'public',
        tags: ['overview'],
        status: 'published',
        createdAt: '2026-04-12T09:00:00.000Z',
        updatedAt: '2026-04-12T09:00:00.000Z',
        wordCount: 120,
        readingTime: 1,
        viewCount: 42,
      },
    ],
  },
]

export function DocsExample(): React.JSX.Element {
  const docs = useDocs(tree, { siteName: 'Geenius Docs' })
  const searchDocsForQuery = useCallback(
    (query: string): SearchResult[] => {
      const index = buildDocsIndex(docs.flatPages, docs.sections)
      return searchDocs(query, index)
    },
    [docs.flatPages, docs.sections],
  )
  const search = useDocSearch(searchDocsForQuery)

  return (
    <DocsProvider docs={docs} search={search}>
      <DocsLayout
        sections={docs.sections}
        currentPageId={docs.currentPage?.id}
        onNavigate={(page) => docs.setPage(page)}
      >
        {docs.currentPage ? <DocPage page={docs.currentPage} /> : null}
      </DocsLayout>
    </DocsProvider>
  )
}

Variant matrix

| Axis | Members | Current run status | | ---- | ------- | ------------------ | | Validated UI variants | react, react-css, solidjs, solidjs-css, react-native | In scope for build, type-check, Storybook, and tests | | Deferred UI variants | react-shadcn, react-mui, react-ant, react-chakra, react-mantine, react-heroui, react-daisyui, solidjs-kobalte, solidjs-ark, solidjs-solidui | Not exported until their launch pass builds and verifies distributable artifacts | | DB providers | convex, neon, cloudflareKV, memory | In scope for build, type-check, and tests | | Post-launch providers | supabase, mongodb | Do not scaffold in this run |

Storybook review apps

The in-scope stock Storybook v10 apps live under apps/storybook-react/, apps/storybook-react-css/, apps/storybook-solidjs/, apps/storybook-solidjs-css/, and apps/storybook-react-native/. Run any app with:

pnpm --filter @geenius/docs-storybook-react dev
pnpm --filter @geenius/docs-storybook-react-css dev
pnpm --filter @geenius/docs-storybook-solidjs dev
pnpm --filter @geenius/docs-storybook-solidjs-css dev
pnpm --filter @geenius/docs-storybook-react-native dev

Deferred web library Storybook apps remain out of the current build and test matrix.

Quality gates

variants.json is the source of truth for variants. @geenius/release-toolkit filters deferred variants by default; set OMEGA_INCLUDE_OUT_OF_SCOPE=1 for a planned re-inclusion.

pnpm lint
pnpm lint:apps
pnpm lint:pub
pnpm type-check
pnpm test
pnpm test:db:conformance
pnpm test:db:migrations
pnpm test:storybook:build
pnpm test:storybook
pnpm test:e2e
pnpm test:a11y
pnpm test:visual
pnpm test:perf
pnpm test:coverage
pnpm test:diff-coverage
pnpm size
pnpm audit:supply-chain
pnpm test:license
pnpm test:gauntlet
pnpm test:all

Mutation testing (slower scheduled gate):

pnpm test:mutation

License

Commercial software. See LICENSE.