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

quickish

v0.6.6

Published

Publish a folder of HTML and assets to the web in one command. quickish.site / quickish.space

Downloads

4,814

Readme

quickish

Publish a folder of HTML and assets to the web in one command.

npm i -g quickish
quickish login        # sign in with Google
quickish              # publish the current folder

Your page goes live at https://<you>.quickish.site/ (personal) or https://<company>.quickish.space/ (work account). No build step, no config, no server. Just a folder of files.

Commands

| Command | What it does | |---|---| | quickish login | Sign in with Google (opens a browser; a token is returned to a throwaway 127.0.0.1 listener, so the CLI never holds Google credentials). | | quickish [folder] [page] | Publish a folder (default .) to your root page. An optional sub-page name publishes to /name/, e.g. quickish ./site deck. | | quickish --localish | Tunnel your local dev server to a private Quickish URL (see below). | | quickish whoami | Show the signed-in account. | | quickish open | Print your space's URL. | | quickish logout | Forget the stored token. |

Visibility

Pages default to sensible visibility and you can override per push:

  • Personal accounts → public (after a one-time content-policy consent on the web).
  • Workspace accounts → company-visible (anyone signed in at your domain).
  • --private → only you.
  • --invites [email protected],[email protected] → private to you and the people you list (they sign in to prove it).
  • --public → share with the world (one-time consent).
  • --workspace → share with your company.

Need fine-grained, per-person access without Google Drive? Use --invites. (Drive-folder publishing is coming soon.)

Scheduled functions (triggers)

Run a server-side function (functions/<name>.js) on a schedule by declaring a trigger in your app's quickish.json:

{
  "name": "Flipboard",
  "timezone": "America/Los_Angeles",        // optional — for time-of-day triggers
  "triggers": {
    "weather": { "type": "timed", "value": "15m" },                          // every 15 minutes
    "digest":  { "type": "timed", "value": "9:00am", "daysOfWeek": ["mon","wed","fri"] }
  }
}
  • value is a frequency (30s, 5m, 1h, 10 minutes, 5 hours — minimum 30s) or a time of day (9:00am, 13:00, 1pm — runs once a day in your timezone).
  • daysOfWeek is optional (omit = every day); use monsun or full names.
  • A function may have several triggers (pass an array).

quickish validates triggers before publishing — a bad schedule (below the 30s floor, an unparseable time, a trigger for a function that doesn't exist) aborts the publish with a clear message; nothing is uploaded. quickish dev runs the same schedules locally so you can verify them offline first.

Localish — your localhost on a Quickish URL

quickish --localish              # auto-detect your dev server and tunnel it
quickish --localish              # in a docker-compose repo: pick which service to tunnel
quickish --localish --port 5173  # tunnel a specific port
quickish --localish --service api  # tunnel a specific compose service (no prompt)
quickish --localish --name app   # choose the URL handle

--localish turns the CLI into a reverse tunnel from a stable Quickish URL to your local dev server (pnpm dev / npm start). Your app becomes reachable at https://<you>.quickish.site/_localish/<name>/ — live, served straight from your machine, with no build and no publish. Stop the CLI (Ctrl-C) and the URL goes offline. It's ngrok, but owned by Quickish, private by default, and stable across restarts.

  • Attach or start. If a dev server is already running it's tunnelled; otherwise the CLI offers to run your detected dev script and supervises it.
  • docker-compose + monorepo aware. Localish discovers what you can tunnel from both sides: Docker services (from docker compose ps) and host-side dev servers in a pnpm/npm/yarn workspace (each package's dev script + its port). That covers the common mixed setup — FE on the host via pnpm/turbo, API in Docker — showing both in one picker. It ranks them (frontend / API / database; databases are shown but skipped — it tunnels HTTP, not the DB wire protocol), navigable with arrow keys or number keys. If nothing's running it offers to bring things up — a Makefile start/dev target (e.g. make startpnpm turbo run dev), a root pnpm dev/npm start script, or docker compose up -d — and if you pick a host dev server that's stopped, it starts that package for you. Your choice is remembered per project (--service to pin, --forget to reset).
  • HMR works. WebSocket upgrades tunnel end-to-end, so Vite/Next hot-reload through the URL (set the framework's base to /_localish/<name>/ for HMR on an already-running root-base server).
  • Private only. A localish site is company-visible on a work account (org members can reach it), owner-only on personal; --private forces owner-only. It can never be public.
  • Resilient. The tunnel reconnects automatically (with backoff) if the connection drops — the same URL resumes.
  • Plan limits. Free includes 1 active localish tunnel; paid is unlimited.
  • Agent-friendly. A desktop coding agent gets a URL it can verify changes against; GET /_localish/<name>/__status returns JSON readiness (online, port).

Environment overrides

  • QUICKISH_CONTROL: control-plane base URL (default https://quickish.website).
  • QUICKISH_API: API base URL (default https://api.quickish.website).
  • XDG_CONFIG_HOME: where the token is stored (default ~/.config/quickish).