···9292> [!TIP]
9393> For more about the meaning of these directories, check out the docs on the [Nuxt directory structure](https://nuxt.com/docs/4.x/directory-structure).
94949595+### Local connector CLI
9696+9797+The `cli/` workspace contains a local connector that enables authenticated npm operations from the web UI. It runs on your machine and uses your existing npm credentials.
9898+9999+```bash
100100+# run the connector from the root of the repository
101101+pnpm npmx-connector
102102+```
103103+104104+The connector will check your npm authentication, generate a connection token, and listen for requests from npmx.dev.
105105+95106## Code style
9610797108### Typescript
+84-62
README.md
···12121313## Vision
14141515-The aim of [npmx.dev](https://npmx.dev) is to provide a better browser for the npm registry - fast, accessible, and designed for power users.
1515+The aim of [npmx.dev](https://npmx.dev) is to provide a better browser for the npm registry – fast, accessible, and designed for power users. We don't aim to replace the [npmjs.com](https://www.npmjs.com/) registry, just provide a better UI and DX.
16161717-- **Speed first** - Insanely fast searching, filtering, and navigation.
1818-- **URL compatible** - Replace `npmjs.com` with `xnpmjs.com` or `npmx.dev` in any URL and it just works.
1919-- **Provenance aware** - See at a glance which packages have verified build provenance.
1717+- **Speed first** – Layout shift, flakiness, slowness is The Worst. Fast searching, filtering, and navigation.
1818+- **URL compatible** – Replace `npmjs.com` with `xnpmjs.com` or `npmx.dev` in any URL and it just works.
1919+- **Simplicity** – No noise, cluttered display, or confusing UI. If in doubt: choose simplicity.
20202121## Features
22222323-- **Dark mode by default** - easier on the eyes
2424-- **Package browsing** - fast search, package details, READMEs, versions, dependencies
2525-- **User profiles** - view any npm user's public packages at `/~username`
2626-- **Organization pages** - browse org packages at `/org/orgname`
2727-- **Provenance indicators** - verified build indicators for packages with npm provenance
2828-- **Admin features** - org/team management, package access controls via local connector (coming soon)
2323+### Package browsing
29243030-### URL compatibility
2525+- **Dark mode by default** – easier on the eyes
2626+- **Fast search** – quick package search with instant results
2727+- **Package details** – READMEs, versions, dependencies, and metadata
2828+- **Code viewer** – browse package source code with syntax highlighting and permalink to specific lines
2929+- **Provenance indicators** – verified build badges for packages with npm provenance
3030+- **JSR availability** – see if scoped packages are also available on JSR
3131+- **Package badges** – module format (ESM/CJS/dual), TypeScript types, and engine constraints
3232+- **Outdated dependency indicators** – visual cues showing which dependencies are behind
3333+- **Vulnerability warnings** – security advisories from the OSV database
3434+- **Download statistics** – weekly download counts with sparkline charts
3535+- **Install size** – total install size including dependencies
3636+- **Infinite search** – auto-load additional search pages as you scroll
31373232-npmx.dev supports npm permalink patterns:
3838+### User & org pages
33393434-| Pattern | Example |
3535-| ----------------------------- | -------------------------------------------------------------- |
3636-| `/package/<name>` | [`/package/nuxt`](https://npmx.dev/package/nuxt) |
3737-| `/package/@scope/name` | [`/package/@nuxt/kit`](https://npmx.dev/package/@nuxt/kit) |
3838-| `/package/<name>/v/<version>` | [`/package/vue/v/3.4.0`](https://npmx.dev/package/vue/v/3.4.0) |
3939-| `/search?q=<query>` | [`/search?q=vue`](https://npmx.dev/search?q=vue) |
4040-| `/~<username>` | [`/~sindresorhus`](https://npmx.dev/~sindresorhus) |
4141-| `/org/<name>` | [`/org/nuxt`](https://npmx.dev/org/nuxt) |
4040+- **User profiles** – view any npm user's public packages at `/~username`
4141+- **Organization pages** – browse org packages at `/@orgname`
4242+- **Search, filter & sort** – find packages within user/org lists
4343+- **Infinite scroll** – paginated lists that load as you scroll
42444343-## Tech stack
4444-4545-- [Nuxt 4](https://nuxt.com/)
4646-- [Nitro](https://nuxt.com/docs/guide/concepts/server-engine)
4747-- [UnoCSS](https://unocss.dev/)
4848-- [nuxt-og-image](https://github.com/nuxt-modules/og-image)
4949-- [npm Registry API](https://github.com/npm/registry/blob/main/docs/REGISTRY-API.md)
4545+### Comparison with npmjs.com
50465151-## Try it out locally
4747+| Feature | npmjs.com | npmx.dev |
4848+| ------------------------------ | :-------: | :------: |
4949+| Package search | ✅ | ✅ |
5050+| Package details & README | ✅ | ✅ |
5151+| Version history | ✅ | ✅ |
5252+| Dependencies list | ✅ | ✅ |
5353+| User profiles | ✅ | ✅ |
5454+| Organization pages | ✅ | ✅ |
5555+| Provenance indicators | ✅ | ✅ |
5656+| Code browser | ✅ | ✅ |
5757+| Dark mode | ❌ | ✅ |
5858+| Outdated dependency warnings | ❌ | ✅ |
5959+| Module format badges (ESM/CJS) | ❌ | ✅ |
6060+| TypeScript types indicator | ✅ | ✅ |
6161+| Install size calculation | ❌ | ✅ |
6262+| JSR cross-reference | ❌ | ✅ |
6363+| Vulnerability warnings | ✅ | ✅ |
6464+| Download charts | ✅ | ✅ |
6565+| Dependents list | ✅ | 🚧 |
6666+| Package admin (access/owners) | ✅ | 🚧 |
6767+| Org/team management | ✅ | 🚧 |
6868+| 2FA/account settings | ✅ | ❌ |
6969+| Publishing packages | ✅ | ❌ |
52705353-I'd welcome contributions – please do feel free to poke around and improve things. Here's how you can get going locally.
7171+🚧 = coming soon
54725555-### Setup
7373+## URL structure
56745757-```bash
5858-# install dependencies
5959-corepack enable
6060-pnpm install
7575+### npm compatibility
61766262-# serve in dev mode, with hot reload at localhost:3000
6363-pnpm dev
7777+npmx.dev supports npm permalinks – just replace `npmjs.com` with `npmx.dev` or `xnpmjs.com` and it works:
64786565-# build for production
6666-pnpm build
7979+| npm URL | npmx.dev equivalent |
8080+| ------------------------------- | ---------------------------------------------------------------------- |
8181+| `npmjs.com/package/nuxt` | [`npmx.dev/package/nuxt`](https://npmx.dev/package/nuxt) |
8282+| `npmjs.com/package/@nuxt/kit` | [`npmx.dev/package/@nuxt/kit`](https://npmx.dev/package/@nuxt/kit) |
8383+| `npmjs.com/package/vue/v/3.4.0` | [`npmx.dev/package/vue/v/3.4.0`](https://npmx.dev/package/vue/v/3.4.0) |
8484+| `npmjs.com/search?q=vue` | [`npmx.dev/search?q=vue`](https://npmx.dev/search?q=vue) |
8585+| `npmjs.com/~sindresorhus` | [`npmx.dev/~sindresorhus`](https://npmx.dev/~sindresorhus) |
8686+| `npmjs.com/org/nuxt` | [`npmx.dev/org/nuxt`](https://npmx.dev/org/nuxt) |
67876868-# preview in production mode
6969-pnpm preview
7070-```
8888+> [!TIP]
8989+> Want automatic redirects? Try the [npmx-replace browser extension](https://github.com/tylersayshi/npmx-replace-extension).
71907272-### Testing
9191+#### Not yet supported
73927474-```bash
7575-# run all tests
7676-pnpm test
9393+- `/package/<name>/access` – package access settings
9494+- `/package/<name>/dependents` – dependent packages list
9595+- `/settings/*` – account settings pages
77967878-# run unit tests
7979-pnpm test:unit
9797+### Simpler URLs
80988181-# run e2e tests
8282-pnpm test:browser
9999+npmx.dev also supports shorter, cleaner URLs:
831008484-# type check
8585-pnpm test:types
8686-```
101101+| Pattern | Example |
102102+| -------------- | -------------------------------------------------- |
103103+| `/<package>` | [`/nuxt`](https://npmx.dev/nuxt) |
104104+| `/@scope/name` | [`/@nuxt/kit`](https://npmx.dev/@nuxt/kit) |
105105+| `/@org` | [`/@nuxt`](https://npmx.dev/@nuxt) |
106106+| `/~username` | [`/~sindresorhus`](https://npmx.dev/~sindresorhus) |
871078888-### Local connector (CLI)
108108+## Tech stack
891099090-The `cli/` workspace contains a local connector that enables authenticated npm operations from the web UI. It runs on your machine and uses your existing npm credentials.
110110+- [Nuxt 4](https://nuxt.com/)
111111+- [Nitro](https://nuxt.com/docs/guide/concepts/server-engine)
112112+- [UnoCSS](https://unocss.dev/)
113113+- [nuxt-og-image](https://github.com/nuxt-modules/og-image)
114114+- [npm Registry API](https://github.com/npm/registry/blob/main/docs/REGISTRY-API.md)
911159292-```bash
9393-# run the connector from the root of the repository
9494-pnpm npmx-connector
9595-```
116116+## Contributing
961179797-The connector will check your npm authentication, generate a connection token, and listen for requests from npmx.dev.
118118+I'd welcome contributions – please do feel free to poke around and improve things. See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines on how to get up and running!
9811999120## Related projects
100121101101-- [JSR](https://jsr.io/) - The open-source package registry for modern JavaScript and TypeScript
102102-- [npm-userscript](https://github.com/bluwy/npm-userscript) - Browser userscript with various improvements and fixes for npmjs.com
103103-- [npm-alt](https://npm.willow.sh/) - An alternative npm package browser
122122+- [npmx-replace-extension](https://github.com/tylersayshi/npmx-replace-extension) – Browser extension to redirect npmjs.com to npmx.dev
123123+- [JSR](https://jsr.io/) – The open-source package registry for modern JavaScript and TypeScript
124124+- [npm-userscript](https://github.com/bluwy/npm-userscript) – Browser userscript with various improvements and fixes for npmjs.com
125125+- [npm-alt](https://npm.willow.sh/) – An alternative npm package browser
104126105127If you're building something cool, let me know! 🙏
106128