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

@minch/bentolio

v0.9.31

Published

A minimal portfolio template and layer built with Nuxt 4, Tailwind CSS 4, and GSAP.

Readme

Bentolio

A minimal portfolio template and Nuxt layer built with Nuxt 4, Tailwind CSS 4, and GSAP.

All content and basic styling are configured via app/app.config.ts.

Screenshot

For the original Astro version (not actively updated), check the astro branch.

Features

  • Nuxt Layer: Modern DX, serverless-friendly, and SSG by default
  • Tailwind CSS 4: Zero-config utility classes with CSS-first authoring
  • GSAP animations: Smooth entrance animations and micro‑interactions
  • Dark Mode: Toggle via @nuxtjs/color-mode (class strategy)
  • Icons: @nuxt/icon with Iconify collections (e.g., ph, simple-icons)
  • Type‑safe app config: Autocompletion and validation for your site data
  • Static generation: Pre‑rendered pages for easy deployment to any static host
  • OG Image: Automatically generated OG image via nuxt-og-image

Configure Your Portfolio

To use as a template, you can simply clone and update the files to your liking.

Alternatively, you can also use it as a Nuxt layer:

npm i -D @minch/bentolio
export default defineNuxtConfig({
  extends: ["@minch/bentolio"]
});

Have a look at .playground to see how to set up as a layer.

All page content lives in app/app.config.ts and is fully typed (see app/utils/types.ts). Edit the example values to your own:

// app/app.config.ts (excerpt)
export default defineAppConfig({
  style: {
    roundedItems: false
  },
  portfolio: {
    name: "Your Name",
    subtitle: "What you do",
    // company: "[COMPANY]",
    avatar: "/profile.jpg",
    bio: {
      // Prefer html for rich content; fallback to text if html is empty
      html: "I'm a <span class='font-bold text-primary'>Full‑Stack</span> Dev...",
      text: "I'm a Full‑Stack Dev..."
    },
    socials: {
      GitHub: {
        socialMediaIcon: "simple-icons:github",
        profileUrl: "https://github.com/your-handle",
        socialMediaBgColor: "bg-black!",
        socialMediaBorderColor: "border-black!",
        socialMediaTextColor: "text-white!"
      }
      // X, LinkedIn, Bluesky are also supported
    },
    cta: {
      contact: "[email protected]",
      location: "Your City",
      link: { url: "https://your-site.com", label: "Portfolio" }
    }
  }
});

Supported social keys by default: "X" | "LinkedIn" | "Bluesky" | "GitHub". To add more networks, extend the SocialMediaKey union and the socials mapping in app/utils/types.ts. The layout is designed to only display 4 social links by default.

Assets

  • Replace public/profile.jpg with your own avatar.
  • Update public/favicon.svg, public/og-image.png, public/logo.svg and public/logo.svg if desired.
  • OG image can be auto-generated using the nuxt-og-image module.

Theming and Styles

  • Tailwind entry is app/assets/css/tailwind.css.
  • Primary color is set via CSS theme variable:
@import "@minch/bentolio/tailwind";

/*  Change `--color-primary` to customize your accent. */
@theme {
  --color-primary: var(--color-lime-500);
}

Animations

  • GSAP is provided via a Nuxt plugin ($gsap). See app/layouts/default.vue for entrance animations.
  • Elements with the animate-element utility class will animate in on page load. The initial state and transitions are defined in app/assets/css/tailwind.css.
  • The waving hand emoji animation is controlled via the #wave id in CSS.

Deployment

This template is configured for static generation via routeRules in nuxt.config.ts.

Credit

The design is inspired by @TomIsLoading's Bento Grid from Hover.dev.