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

insighta-cli-go

v0.1.0

Published

Insighta Labs+ CLI — GitHub OAuth (PKCE), profiles, search, export. Pure-Go binary, distributed via npm.

Readme

insighta — CLI for Insighta Labs+

A Go CLI that authenticates via GitHub OAuth (PKCE) and talks to the Insighta Labs+ backend. Globally installable; credentials live at ~/.insighta/credentials.json.

Install

# from source
git clone <this-repo> && cd insighta-cli
go install .

# verify
insighta version

After go install, the insighta binary lives in $GOPATH/bin (or $HOME/go/bin) which should already be on your PATH. If not:

export PATH="$PATH:$(go env GOPATH)/bin"

Configure

# Optional — defaults to the live deployment
export INSIGHTA_API_URL=https://be-hng-1.onrender.com

# Optional — overrides the GitHub client_id the CLI fetches from the backend
export INSIGHTA_CLIENT_ID=Iv1.xxxxx

The CLI's local OAuth callback listens on http://127.0.0.1:9876/callback during insighta login. The GitHub OAuth App's "Authorization callback URL" must include this loopback callback (see the backend repo's deployment notes).

Usage

Auth

insighta login        # opens GitHub OAuth in your browser
insighta whoami       # GET /api/users/me
insighta logout       # revokes refresh + clears local creds

Profiles

insighta profiles list
insighta profiles list --gender male --country NG --age-group adult
insighta profiles list --min-age 25 --max-age 40
insighta profiles list --sort-by age --order desc
insighta profiles list --page 2 --limit 20

insighta profiles get <id>
insighta profiles search "young males from nigeria"
insighta profiles create --name "Harriet Tubman"     # admin only
insighta profiles export --format csv --gender male --country NG
insighta profiles export --format csv --out ./out.csv

profiles create requires the admin role. Analysts can read and search and export, but any non-GET request returns 403.

How auth works

insighta login
   │
   ├── generates state + code_verifier + code_challenge (PKCE)
   ├── starts a one-shot HTTP server on 127.0.0.1:9876
   ├── opens browser to GitHub /authorize?...&code_challenge=...
   │
github.com  →  redirects browser to 127.0.0.1:9876/callback?code=…&state=…
   │
   ├── CLI validates state matches
   ├── POSTs { code, code_verifier, redirect_uri } to backend
   │     /auth/github/exchange
   │
backend  →  exchanges with GitHub, upserts user, returns
            { access_token, refresh_token, user }
   │
   └── CLI saves credentials to ~/.insighta/credentials.json

Token handling

  • Access tokens (3-minute expiry) are sent on every request as Authorization: Bearer <token> plus X-API-Version: 1.
  • On 401 invalid_token the CLI automatically calls POST /auth/refresh once, retries the original request, and persists the rotated pair.
  • If refresh also fails (refresh expired or revoked), the CLI returns the error to the user with "not logged in (run: insighta login)".

Project layout

main.go      command dispatcher
auth.go      login (PKCE), logout, whoami; local callback server
api.go       HTTP client with auto-refresh on 401
creds.go     ~/.insighta/credentials.json read/write
profiles.go  list, get, search, create, export commands
render.go    table rendering, spinner, helpers

CI

.github/workflows/ci.yml runs gofmt, go vet, go build, go test on every PR + push to main.

HNG-WEPAPP-3

HNG_3_CLI