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

@mahidsec/nest

v1.0.6

Published

Standalone local course viewer with Moonlight themes

Readme


Browse and watch local course materials with beautiful themes, inline file previews, watch progress tracking, and one-click Cloudflare tunneling.

Install · Preview · Features · CLI Menu · FAQ · Contributing

Install

npm install -g @mahidsec/nest

Then just run:

nest

The server starts at http://localhost:6969. Open it from any device on your network using your local IP.

On first run, Nest will automatically download cloudflared if you choose to start a tunnel.

Preview

Features

  • Course Management — Import folders, organize by categories, track watch progress
  • File Viewer — Inline preview for videos, images, PDFs, code, markdown, and CSV
  • Curriculum Sidebar — Collapsible sections with progress tracking and expand/collapse all
  • Cloudflare Tunnel — One-click tunneling from both CLI and web UI
  • QR Code — In-browser QR generation for sharing tunnel URLs (no external APIs)
  • System Tray — Runs in the background with a native tray icon
  • Multiple Themes — Moonlight, Sakura, Matcha, Starry, Dusk, Aurora (dark & light)
  • Mobile Responsive — Adaptive layout with touch-friendly navigation
  • LAN Access — Open from any device on your network

CLI Menu

  🪺 Nest (v1.0.0)
  🚀 Server: http://192.168.x.x:6969
  ✅ Status: Running

  ★  Web UI (Open in Browser)
  ☆  Hide to Tray (Background)
  ☆  Cloudflare Tunnel
  ☆  Exit

| Option | Description | | --------------------- | ------------------------------------- | | Web UI | Opens the app in your default browser | | Hide to Tray | Runs in background via system tray | | Cloudflare Tunnel | Creates a public URL with QR code | | Exit | Gracefully shuts down the server |

Use ↑/↓ arrow keys to navigate and Enter to select.

FAQ

Why is port 6969 used?

It's the default port. You can override it by setting the PORT environment variable: PORT=3000 nest.

Does Nest send any data externally?

No. All data stays on your machine. The only external connection is when you explicitly start a Cloudflare Tunnel — that connection goes directly to Cloudflare's edge network. No telemetry, no analytics, no phone-home.

Can I access Nest from my phone/tablet?

Yes. Open http://<your-local-ip>:6969 on any device on the same network. For remote access, use the built-in Cloudflare Tunnel feature.

What file types can Nest preview?

Videos (mp4, mkv, webm, mov, avi), images (jpg, png, gif, webp), code (js, ts, py, java, c, cpp, go, rs, and 20+ more), text (txt, md, csv, log), PDFs, and link files (.url, .webloc).

What happens if I exit the CLI?

The server shuts down gracefully — it closes all connections, stops any active tunnel, and frees the port.

Does it work on Windows/Linux/macOS?

Yes. Nest works on all three platforms. The system tray feature requires a desktop environment. On headless servers, the CLI menu still works.

Data Storage

All data is stored locally:

~/.nest/data/
├── courses.json           # Course registry
└── course_progress.json   # Watch progress per course

Contributing

Clone and run locally:

git clone https://github.com/mahidsec/nest.git
cd nest
npm install
cd frontend && npm install && cd ..

Development:

npm run dev            # Server with hot reload
npm run dev:frontend   # Frontend dev server (separate terminal)

Production build:

npm run build
npm start

Project structure:

nest/
├── assets/              # Icons and static assets
├── bin/
│   └── nest.js          # CLI entry point
├── frontend/            # React + Vite frontend
│   └── src/
│       ├── App.tsx      # Main application
│       └── index.css    # Themes and styles
├── screenshots/         # UI screenshots
├── src/
│   ├── config.ts        # Paths and data directory setup
│   ├── server.ts        # Express API and tunnel
│   └── types.ts         # TypeScript types
├── esbuild.config.mjs   # Backend build config
└── package.json

Tech Stack

| Layer | Technology | | -------- | ---------------------------------------------------------------------------------------------------------------------------------- | | Backend | Express, TypeScript | | Frontend | React 19, Vite, DaisyUI, Tailwind CSS | | Icons | Lucide React | | QR Code | qrcode (client-side) | | Tunnel | Cloudflare Tunnel via cloudflared | | Tray | systray2 |

License

MIT