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

roleprep

v0.3.2

Published

RolePrep is a local-first job-market research and interview preparation app.

Readme

RolePrep

Local-first job-market research, learning guides, and interview preparation.

RolePrep runs a dashboard on your own machine, stores data in local SQLite, and uses a dedicated local Chromium/Chrome profile for LinkedIn search automation. Browser cookies and generated application data stay on your computer unless you export or publish them yourself.

Install

Run once with npx:

npx roleprep start

Or install globally:

npm install -g roleprep
roleprep start

The dashboard opens at http://127.0.0.1:4310/ by default.

CLI

roleprep help
roleprep start
roleprep stop
roleprep restart
roleprep status
roleprep api set sk-...
roleprep api status
roleprep ai provider openai
roleprep ai provider codex
roleprep ai status
roleprep changelog
roleprep login linkedin
roleprep doctor
roleprep reset-data --yes

Useful options:

roleprep start --port 4311 --no-open
roleprep start --data-dir ~/.roleprep
roleprep login linkedin --profile main

Data Location

Default data directories:

  • Linux: ~/.local/share/roleprep
  • macOS: ~/Library/Application Support/RolePrep
  • Windows: %APPDATA%\\RolePrep

Override with:

ROLEPREP_DATA_DIR="$HOME/.roleprep" roleprep start

The data directory contains the SQLite database, dashboard logs, generated artifacts, and dedicated browser profiles.

LinkedIn Login

RolePrep does not use your normal browser profile. Connect a dedicated local profile:

roleprep login linkedin --profile main

Sign in in the opened browser window. After that, scheduler runs can reuse the same local profile. LinkedIn automation can violate LinkedIn policies, so use it only if you accept that account risk.

Development

npm install
npm run dashboard:install
npm run build
npm run check

Start the local dashboard from source:

npm run dashboard:dev

Run the smoke tests:

npm run smoke
npm run dashboard:smoke

RolePrep changes are tracked in CHANGELOG.md.

Configuration

Copy .env.example to .env for source checkouts. The npm CLI works without an .env for the default local SQLite setup.

Important variables:

ROLEPREP_DATA_DIR="$HOME/.local/share/roleprep"
ROLEPREP_SQLITE_PATH="$ROLEPREP_DATA_DIR/roleprep.sqlite"
ROLEPREP_HOST="127.0.0.1"
ROLEPREP_PORT="4310"
ROLEPREP_BROWSER="chromium"
ROLEPREP_CHROME_PATH="google-chrome"
ROLEPREP_BROWSER_PROFILE_KEY="main"
ROLEPREP_WORKER_DATA_DIR="$ROLEPREP_DATA_DIR"
OPENAI_API_KEY=""
ROLEPREP_AI_PROVIDER="openai"
ROLEPREP_CODEX_MODEL=""

The public configuration surface uses ROLEPREP_* variables. By default, both the npm package and source dashboard use ROLEPREP_DATA_DIR for local SQLite data, browser profiles, LinkedIn search output, and generated artifacts. Set it only when you want an isolated workspace.

Learning guides and market insights use OpenAI by default. Store a local API key outside the repo with:

roleprep api set sk-...

For local owner testing, you can route learning-guide and insight generation through an already logged-in Codex CLI instead:

roleprep ai provider codex
roleprep ai codex-model gpt-5.2
roleprep restart

Codex mode depends on the machine's local codex login and is intended for single-user local runs, not hosted multi-user deployments.

Publishing

Package publishing is intentionally manual because npm accounts commonly require interactive 2FA.

npm version patch
npm run publish:dry-run
npm run publish:npm

GitHub Actions build and dry-run the package. They do not publish to npm automatically.

License

ISC