
Pinatastore is an npm package that abstracts away the raw Pinata API to make working with IPFS feel more like working with a document database. Instead of dealing with CIDs, multipart uploads, and JSON parsing manually, you get a simple interface for storing and retrieving structured data on decentralised storage.
The problem it solves
Pinata is one of the most popular IPFS pinning services, but its API is designed for generic file uploads. If you want to store JSON objects — user profiles, NFT metadata, config blobs — you end up writing the same boilerplate in every project: serialise to JSON, upload as a file, remember the CID, later fetch by CID and parse back.
Pinatastore wraps all of that into a cleaner API.
API design
import Pinatastore from 'pinatastore';
const store = new Pinatastore({ apiKey: '...', secretApiKey: '...' });
// Store a document — returns a CID
const cid = await store.set({ name: 'Alice', role: 'admin' });
// Retrieve it later
const data = await store.get(cid); The goal was to make IPFS storage feel as low-friction as using a key-value store, while still being fully decentralised under the hood.
Context
I built this during a period of heavy interest in Web3 tooling. The idea was that developers who wanted to add decentralised storage to their apps shouldn’t need to learn the full IPFS stack first — Pinatastore gives them a familiar mental model. The package is published on npm and the source is on GitHub.