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

@allourthings/core

v1.0.0

Published

Native storage core for All Our Things

Readme

allourthings-core

Rust storage library for AllOurThings — an AI-powered inventory system.

Storage format

Each item is a directory containing a single JSON file:

<data-dir>/items/<slug>-<id>/item.json

The directory name is <slug>-<id> where <slug> is a URL-safe lowercase version of the item name (max 50 chars) and <id> is an 8-character lowercase hex string.

Required fields: id, name, created_at, updated_at. Well-known optional fields include category, subcategory, tags, and attachments. Any additional fields are preserved and round-trip without modification.

Attachment files (PDFs, images, etc.) are stored alongside item.json in the same directory.

Query cache

CatalogStore supports an optional SQLite query cache for efficient filtering.

The cache is write-through — every mutation (add_item, update_item, delete_item, and the attachment operations) updates the cache immediately. Call refresh() to sync changes written externally (e.g. by another process or a mobile app), and rebuild_cache() to fully repopulate from disk if the cache becomes corrupt.

| Platform | Default location | |---|---| | macOS | ~/Library/Caches/allourthings/<hash>/ | | Windows | %LOCALAPPDATA%\allourthings\<hash>\ | | Linux | ~/.cache/allourthings/<hash>/ |

The <hash> is a SHA-256 of the data directory path, so multiple vaults each get their own isolated cache.

The cache schema indexes category, subcategory, and tags for SQL filtering, and stores the full item as a JSON blob for everything else. All three are optional on any item — items missing them are stored and returned normally, they just won't appear when those specific filters are applied. Keeping the indexed columns to only those actually queried means new well-known fields can be added without any schema migration.

Running tests

cargo test

This runs two test suites:

  • Unit tests (in src/) — cover the item schema, slug generation, ID generation, storage CRUD, attachments, and cache write-through behaviour
  • Conformance tests (tests/conformance.rs) — assert against the shared fixtures in test-fixtures/catalog/. These define the canonical storage format that all AllOurThings clients (MCP server, iOS app, etc.) must honour

License

MIT