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

run-cv

v0.1.0

Published

A mainframe-inspired terminal CV viewer built with Node.js, React, and Ink.

Readme

run-cv

A mainframe-inspired terminal CV viewer built with Node.js, React, and Ink.

Terminal UI

View Landing Page

Features

  • 📟 Retro Terminal UI: Green-screen aesthetic with keyboard navigation.
  • 📝 Markdown Driven: CV content is managed entirely via Markdown files.
  • 📂 Multi-Human Support: Easily switch between different profiles.

Usage

  • 📟 MacOS/Linux: Just run npx run-cv
  • 🪟 Windows: Ensure Node.js is installed, then run npx run-cv in your terminal.
npx run-cv <name>

Development

To run the project locally:

npm install
npm run dev
# or for a specific profile
npm run dev <name>

Usage

To run the CV for a specific human:

npm run dev <name>

Adding a New Human

  1. Create a folder in src/humans/<name>.
  2. Create an introduction.md file. This acts as the manifest and entry point. (PDF generator now reads from this file; pdf-intro.md is deprecated.)
    • Frontmatter may include a skills: field (comma-separated) and you can place <!-- Skills badges --> somewhere in the body to have them rendered as retro badges in the terminal and as styled labels above the intro text in the PDF.
---
name: Your Name
role: Your Role
menu:
  - label: Work Experience
    file: experience/index.md
  - label: Contact
    file: contact.md
---

# SYSTEM ONLINE

Welcome to the terminal.
  1. Add the referenced markdown files (e.g., experience.md, contact.md) in the same folder.

PDF Generation

You can generate a PDF version of a CV using the gen-pdf script. It will include the text from introduction.md at the top; separate pdf-intro.md files are no longer required.

npm run gen-pdf <name> [-- --theme <theme-name>]
  • <name>: The name of the human.
  • --theme <theme-name>: (Optional) Specify a theme. Defaults to vintage.

A companion utility, gen-json, will export the same CV content as a plain JSON file (frontmatter plus markdown body). It ignores any UI/menu fields so you can consume it from other tools.

npm run gen-json <name> [-- --all]

Available themes:

  • vintage
  • terminal

Each theme supports a handful of CSS variables you can tweak in styles/themes/<theme>/base.css. A new variable --list-item-spacing controls vertical distance between <li> elements (default 1 mm), so PDFs render without excessive gaps.

Example:

# Generate a PDF for <name> with the 'terminal' theme
  npm run gen-pdf <name> -- --theme terminal

NPM Publishing & Versioning Guide

We use Semantic Versioning (SemVer) to manage releases. Instead of manually editing package.json, use the following automated workflow to ensure the repository tags and the NPM registry remain perfectly in sync.

1. Semantic Versioning Commands

Decide which part of the version number ($X.Y.Z$) to increment based on your changes:

| Command | Result | Use Case | | :------------------ | :------------------ | :-------------------------------------------------------------------- | | npm version patch | 0.0.x0.0.x+1 | Bug fixes, style tweaks, or minor text updates. | | npm version minor | 0.x.00.x+1.0 | New features (e.g., a new PDF theme) that are backward-compatible. | | npm version major | x.0.0x+1.0.0 | Breaking changes (e.g., changing the data tape structure or CLI API). |

Note: These commands automatically update package.json and package-lock.json, create a git commit, and generate a git tag.

Example:

npm version patch -m "Release v%s: Fixed header spacing and updated blah theme"

2. Sync to GitHub (with tags)

git push origin main --follow-tags

3. Publish to npm

npm login
npm publish

5. Finalize GitHub Release

Go to the Releases tab on GitHub.

Click Draft a new release.

Select the Tag you just pushed (e.g., v0.0.6).

Click Generate release notes to automatically pull in your commit history.

Click Publish release