Backup and preserve NFTs before they disappear. CIDKeeper scans an Ethereum wallet via Alchemy, checks IPFS gateway health for primary assets, supports ZIP export with a manifest, and optional re-pinning through web3.storage.
Note: web3.storage pinning in the UI and API is still a work in progress; ZIP export and CID checks are the more stable workflows.
Live site: deploy as you prefer; the UI can use your own Alchemy and web3.storage credentials (stored in the browser) so you are not limited by shared free-tier quotas.
Source and issues: github.com/innovinitylabs/CIDKeeper. Contributions (bug reports, docs, pull requests) are welcome.
- Node.js 20 LTS or newer (includes
npm). Check withnode -vandnpm -v. - Git (to clone the repository).
On a fresh Mac: install Node.js (LTS) from the website, or use Homebrew (brew install node), then install Git if needed (brew install git).
On a fresh Windows PC: install Node.js (LTS) and Git for Windows. Use PowerShell or Git Bash for the commands below.
-
Clone the repository
git clone https://github.com/innovinitylabs/CIDKeeper.git cd CIDKeeper -
Install dependencies
npm install
-
Configure environment variables
cp .env.example .env
Edit
.envand set at least:ALCHEMY_API_KEY— required for server routes to talk to Alchemy unless the client sends a key (see below).WEB3STORAGE_TOKEN— optional; only needed for the pin API route if you do not send a token from the browser.
Optional variables are documented in
.env.example. -
Start the development server
npm run dev
-
Open the app in a browser at http://localhost:3000.
The web UI can save Alchemy and web3.storage keys in localStorage and send them to your local /api/* routes. You can leave ALCHEMY_API_KEY / WEB3STORAGE_TOKEN empty in .env for local experiments if you always use keys from the UI (not recommended for production servers you do not fully control).
npm run build
npm run startThen open http://localhost:3000 (default port 3000 unless you set PORT).
| Command | Description |
|---|---|
npm run dev |
Next.js dev server with hot reload |
npm run build |
Production build |
npm run start |
Serve the production build |
npm run lint |
ESLint |
npm test |
Node test runner for lib/*.test.ts |
- Next.js (App Router)
- TypeScript, Tailwind CSS v4
- Alchemy (NFTs, transfers, RPC), web3.storage (optional pin flow)
- Open an issue to describe the change or bug.
- Fork the repo, create a branch, make focused commits.
- Run
npm run lintandnpm testbefore opening a pull request.
See LICENSE in this repository.