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

tinybeast-services-gated-content

v1.1.4

Published

This layer is making it possible to gate content on the website

Readme

Tiny Beast theme: services

This layer is making it possible to gate content on the website

Setup

Make sure to install the dependencies:

pnpm install

Working on your layer

The layer is at the root of this repository, it is exactly like a regular Nuxt project, except you can publish it on NPM.

The .playground directory should help you on trying your layer during development.

Running pnpm dev will prepare and boot .playground directory, which imports your layer itself.

Distributing your layer

Your Nuxt layer is shaped exactly the same as any other Nuxt project, except you can publish it on NPM.

To do so, you only have to check if files in package.json are valid, then run:

npm publish --access public

Once done, your users will only have to run:

npm install --save your-layer

Then add the dependency to their extends in nuxt.config:

defineNuxtConfig({
  extends: 'tinybeast-services-gated-content'
})

Development Server

Start the development server on http://localhost:3000

pnpm dev

Production

Build the application for production:

pnpm build

Or statically generate it with:

pnpm generate

Locally preview production build:

pnpm preview

Storyblok

Storyblok is used for content management. To pull components from Storyblok, run:

storyblok pull-components --space <space_id>

storyblok cli 4

storyblok components --space <space_id> pull

To push components to Storyblok, run:

storyblok push-components --space <space_id> <path_to_schema_file>

storyblok cli 4

storyblok components push --space <space_id> --from <path_to_schema_file or space_id>

Required Environment Variables

Production/Development

  • BASE_URL=your_base_url
  • NUXT_PUBLIC_NODE_ENV=production (or development)
  • STORYBLOK_ACCESS_TOKEN=your_storyblok_access_token
  • CLERK_SECRET_KEY=your_clerk_secret_key
  • NUXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
  • NUXT_PUBLIC_SUBSCRIPTION_PLANS=your_subscription_plans

Preview Mode (for Storyblok)

  • NUXT_PUBLIC_NODE_ENV=preview
  • STORYBLOK_SPACE=your_storyblok_space_url (used as password)
  • STORYBLOK_ACCESS_TOKEN=your_storyblok_access_token

Preview Mode

When NUXT_PUBLIC_NODE_ENV=preview, the layer switches to preview mode:

  • Clerk authentication is disabled - No Clerk module is loaded
  • Simple password gate - Only /medlem routes are protected with a password prompt
  • Password is the Storyblok space URL - Set via STORYBLOK_SPACE environment variable
  • Persistent authentication - Uses localStorage to remember authentication (works in iframes)
  • Perfect for Storyblok live preview - Solves iframe security header issues

This allows content editors to preview gated content in Storyblok without complex authentication flows.

Checkout the deployment documentation for more information.