BladeVault

BladeVault

Docker app from dedkola's Repository

Overview

BladeVault is a local-first knife collection manager. Organize and compare your collection, store images and a SQLite database in persistent appdata, and export knife records to PDF.
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 Helm

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
Kubernetes k3s or another Kubernetes cluster Install with Helm
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

Install with Helm

The default chart is designed for k3s with MetalLB. It creates a dedicated LoadBalancer address and a persistent 5 GiB volume for the SQLite database and downloaded images.

Install

helm repo add bladevault https://dedkola.github.io/bladevault

helm install bladevault bladevault/bladevault \
  --namespace bladevault \
  --create-namespace

Get the address, then open http://<EXTERNAL-IP>:

kubectl get service bladevault --namespace bladevault

If the repository was already added, run helm repo update bladevault before installing.

Update BladeVault

Each BladeVault release publishes a matching Helm chart and immutable container image. After the GitHub Build & Push Docker Image and Publish Helm Repository workflows complete, refresh the repository and upgrade the release:

helm repo update bladevault
helm upgrade bladevault bladevault/bladevault --namespace bladevault --wait

The chart version, displayed app version, and default image tag match the BladeVault release. For example, chart 0.2.46 installs image v0.2.46.

If you explicitly override image.tag=latest, recreate the pod after a new image is published because the mutable tag does not change the Deployment:

kubectl rollout restart deployment/bladevault --namespace bladevault
kubectl rollout status deployment/bladevault --namespace bladevault

Remove BladeVault

helm uninstall bladevault --namespace bladevault

The chart keeps the bladevault-data PVC so uninstalling does not remove your collection. To permanently delete the stored database and images too:

kubectl delete pvc bladevault-data --namespace bladevault
kubectl delete namespace bladevault

See the chart README for NGINX ingress with a hostname, immutable image tags, existing PVCs, and other configuration.

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 test Run the unit and integration suite once.
npm run test:watch Run unit and integration tests in watch mode.
npm run test:e2e Build the web app and run Chromium smoke tests.
npm run test:e2e:ui Open Playwright's interactive test runner.
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.

Media gallery

1 / 4

Video

Install BladeVault on Unraid in a few clicks.

Find BladeVault in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for BladeVault Review the template variables and paths Click Install

Categories

Download Statistics

11,456
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/dedkola/bladevault:latest
Last Updated2026-07-31
First Seen2026-07-15

Runtime arguments

Web UI
http://[IP]:[PORT:3000]
Network
bridge
Shell
bash
Privileged
false

Template configuration

WebUIPorttcp

HTTP port for the BladeVault web interface.

Target
3000
Default
5500
AppdataPathrw

Persistent SQLite database and downloaded knife images.

Target
/app/data
Default
/mnt/user/appdata/bladevault