Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

376 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BladeVault logo

BladeVault

A sharp, local-first knife collection manager.

Catalog your knives, compare them side by side, and keep your collection data under your control.

Next.js React TypeScript SQLite Electron Docker

Download latest release · Watch the demo


What it does

  • Keep detailed knife records with specifications, pricing, provenance, notes, links, and a local image gallery.
  • Search, filter, pin, group, and bulk-edit your collection—including reusable custom text, number, and date fields.
  • Import product details from supported retailer URLs, with an interactive browser fallback for pages that need it.
  • Compare any number of knives side by side, focus on differences, and export or print the table as a landscape PDF.
  • See collection insights such as recent additions, maker distribution, and acquisition activity.
  • Run completely locally with SQLite, or opt into cloud backup when a BladeVault backup service is configured.

Screenshots

BladeVault dashboard showing recent additions and collection insights

Dashboard — recent additions and collection insights

Knife detail page with specifications and image gallery

Knife detail — specifications, notes, and image gallery

Side-by-side knife comparison table

Compare — the details that matter, side by side

Add knife page with URL import and manual entry options

Add knife — import a product URL or enter it yourself

Choose a setup

Option Best for Start here
Desktop app A native macOS or Windows experience Download the latest release
Docker or Podman A self-hosted local instance Run a container
Source Development and customization Run from source

Run in a container

The prebuilt image stores the database and downloaded images in /app/data. Mount a host folder to keep that data when the container is replaced.

Docker on macOS or Linux

mkdir -p "$HOME/BladeVault/data"

docker run -d \
  --name bladevault \
  --restart unless-stopped \
  -p 5500:3000 \
  -v "$HOME/BladeVault/data:/app/data" \
  ghcr.io/dedkola/bladevault:latest

Open http://localhost:5500.

Podman on macOS or Linux

mkdir -p "$HOME/BladeVault/data"

podman run -d \
  --name bladevault \
  --restart unless-stopped \
  -p 5500:3000 \
  -v "$HOME/BladeVault/data:/app/data" \
  ghcr.io/dedkola/bladevault:latest

Docker on Windows

docker run -d `
  --name bladevault `
  --restart unless-stopped `
  -p 5500:3000 `
  -v "${env:USERPROFILE}\BladeVault\data:/app/data" `
  ghcr.io/dedkola/bladevault:latest

Docker Compose

The included Compose file builds this checkout and uses a named Docker volume:

docker compose up -d --build

It is available at http://localhost:5500. To stop it without deleting the persistent volume, run docker compose down.

Build the image yourself

git clone https://github.com/dedkola/bladevault.git
cd bladevault
docker build -t bladevault .

docker run -d \
  --name bladevault \
  --restart unless-stopped \
  -p 5500:3000 \
  -v "$HOME/BladeVault/data:/app/data" \
  bladevault

Desktop app

macOS

Download BladeVault.dmg, open it, then drag BladeVault.app to Applications.

Releases are unsigned. If macOS blocks the first launch, right-click the app, choose Open, and confirm. If needed, run:

xattr -d com.apple.quarantine "/Applications/BladeVault.app"
open "/Applications/BladeVault.app"

Updates use a user-assisted flow: select Download update in Settings → About, open the downloaded DMG, quit BladeVault, and replace the app in Applications.

Windows

Download BladeVault-Setup.exe, run the installer, and open BladeVault from the Start menu or desktop shortcut.

Windows SmartScreen may show a warning for an unsigned build. Choose More infoRun anyway only if you trust the release source.

Run from source

Prerequisites: Node.js 20 or newer. Install Chromium as well if you want to use URL import.

git clone https://github.com/dedkola/bladevault.git
cd bladevault
npm install
npx playwright install chromium
npm run dev

Open http://localhost:3000.

Useful commands

Command Purpose
npm run dev Start the Next.js development server.
npm run build Create a production build.
npm run start Serve the production build after npm run build.
npm run lint Run ESLint.
npm run format:check Check formatting with Prettier.
npm run desktop:dev Run the Electron desktop shell in development.
npm run desktop:smoke Build and smoke-test the desktop runtime.
npm run dist:desktop Package desktop installers without publishing them.

Your data

BladeVault is local-first: it works without an account or API key.

Runtime Default data location
Source ~/BladeVault/data
Docker or Podman /app/data inside the container; mount it to a host folder for persistence
Desktop development ~/.bladevault-desktop-dev/data

The data directory contains bladevault.sqlite and downloaded images. Back up the whole folder to preserve the collection.

Set BLADEVAULT_DATA_DIR to choose a different directory for a source or container runtime. Existing installations that use the legacy repo-local data/bladevault.sqlite continue using it until the database is moved or BLADEVAULT_DATA_DIR is set.

The desktop app can also move its local data folder from Settings when the location is not managed by BLADEVAULT_DATA_DIR.

Optional cloud backup

Cloud backup is opt-in and leaves local storage as the source of truth. When the app is configured with BladeVault authentication and backup service URLs, sign in from Settings → Cloud Backup to upload or restore a complete archive, including images. Automatic backups can run hourly and after collection changes.

Self-hosted deployments can omit those service URLs; the rest of BladeVault works entirely locally.

License

BladeVault is released under the MIT License.

Built with precision for knife enthusiasts.

About

A sharp, EDC, local-first knife collection manager.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages