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

@itcase/next

v2.0.4

Published

Shared Next.js page shell, content editor, SEO, API proxy, and default config for ITCase apps.

Readme

@itcase/next

Shared Next.js pieces for ITCase apps: the CMS page view, TinyMCE content editor, SEO wrapper, API proxy, and a default Next config.

The published package is the dist build. Import the paths below; the TypeScript sources are not shipped.

Page UI

import {
  BasePageWrapper,
  ContentEditor,
  Page,
  TinyMCEContextProvider,
} from '@itcase/next'

Page renders CMS blocks. ContentEditor edits one block. BasePageWrapper renders the document shell and SEO tags. TinyMCEContextProvider shares editor access with the page.

Default Next config

next.config is loaded by Node, so this entry is plain JavaScript.

import defaultNextConfig, {
  assertRequiredEnv,
  copyDirectoryToApps,
} from '@itcase/next/config/defaultNextConfig'

// Copies `<directory>` into `<appsDirectory>/<app>/<directory>`.
// Defaults: appsDirectory `apps`, directory `public`.
copyDirectoryToApps({
  apps: ['auth', 'manager', 'pages', 'participant'],
  appsDirectory: 'apps',
  directory: 'public',
})

// After loadEnvConfig(), so .env.local is already applied.
assertRequiredEnv(['REST_BASE_URL'])

const defaultConfig = defaultNextConfig()

assertRequiredEnv stops the process when a listed name is missing or blank. Omit the call when the app has nothing to require.

copyDirectoryToApps copies one root directory into each app, keeping the same folder name. Next serves only that folder inside the app. When the process starts inside one listed app, only that app is updated. From the repository root, every listed app that has a package.json is updated. appsDirectory defaults to apps, directory defaults to public.

API proxy

App Router catch-all:

export {
  DELETE,
  GET,
  HEAD,
  OPTIONS,
  PATCH,
  POST,
  PUT,
} from '@itcase/next/router/app/api/[...url]/route'

Pages Router catch-all:

export { config, default } from '@itcase/next/router/pages/api/[...url]'

Both forward /api/* and /media/* to the REST and media backends.

Pages Router data

The server helpers live next to the Pages Router code and are imported as @itcase/next/server.

import {
  getPageCanonicalUrl,
  getPageServerSideProps,
  getServerSidePageData,
  requestProxy,
} from '@itcase/next/server'

getPageServerSideProps loads a CMS page for getServerSideProps. getPageCanonicalUrl builds the canonical URL for SSR or SSG. requestProxy is the Pages Router proxy handler.