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

@portfoliablejs/portfoliable

v2.4.15

Published

Template-first portfolio engine powered by valence web components

Downloads

2,442

Readme

Portfoliable

Portfoliable is a template-first portfolio engine powered by valence web components.

Important boundary:

  • This repository ships template/sample content only.
  • Real production content should live in your consumer application repository (for example, portfolio).

Commands

  • npm run dev
  • npm run build
  • npm run preview
  • npm run validate:content
  • npm run scaffold:consumer
  • npm run scaffold:case
  • npm run verify:integration
  • npm run smoke:homeview

Create a new portfolio app

Use the initializer package to scaffold a consumer app in an empty folder:

Important:

  • Run npm create portfoliable@latest ..., not npm run create portfoliable@latest ....
npm create portfoliable@latest my-portfolio
cd my-portfolio
npm run portfoliable

Version note:

Runtime prerequisite:

  • The generated app installs @portfoliablejs/portfoliable from npm.
  • If npm returns 404 Not Found for @portfoliablejs/portfoliable (or @portfoliablejs/valence), publish those runtime packages first. The initializer itself is published, but consumer installs require the runtime packages to be publicly available too.

The generated app includes:

  • npm run portfoliable
  • npm run portfoliable-build
  • npm run build-portfoliable
  • npm run portfoliable-preview
  • npm run preview-portfoliable
  • npm run portfoliable-scaffold-data
  • npm run scaffold-data-portfoliable
  • npm run portfoliable-scaffold-case
  • npm run scaffold-case-portfoliable

The generated scripts call the Portfoliable CLI directly, so you can also run:

npx @portfoliablejs/portfoliable dev
npx @portfoliablejs/portfoliable build
npx @portfoliablejs/portfoliable preview
npx @portfoliablejs/portfoliable scaffold-case --name "My New Case"

Optional flags:

npm create portfoliable@latest my-portfolio -- --no-install
npm create portfoliable@latest my-portfolio -- --force

Scaffold a consumer data starter

Generate a starter cases file in your current folder:

npx @portfoliablejs/portfoliable scaffold
npx @portfoliablejs/portfoliable scaffold-case --name "My New Case"

Or with npm script in this repo:

npm run scaffold:consumer -- --out ./portfolio/src/portfolio-cases.template.js

Use --force to overwrite an existing file.

Content model

Case markdown files in this repo are examples under src/content/cases/.

Validation runs before dev, build, and preview. If validation fails, fix fields in frontmatter or language sections first.

Integration verification

Run full local integration checks for template plus consumer:

npm run verify:integration

This command validates markdown content, builds portfoliable, then builds the sibling portfolio consumer when available. Use --skip-consumer to check only portfoliable:

npm run verify:integration -- --skip-consumer

HomeView smoke check

Run a lightweight smoke gate for HomeView and gallery wiring:

npm run smoke:homeview

This command rebuilds portfoliable and verifies:

  • ds-home-view is present in the main bundle
  • template gallery case titles are present
  • thumbnail frame fallback asset is generated

Release readiness

Recommended release checks before tagging:

npm run validate:content
npm run smoke:homeview
npm run verify:integration

For local parity against in-progress valence changes, this repo may point to a local dependency during development. Before publishing, ensure dependency references match your intended release source.