Shelf is a free, open source erp & operations project written in TypeScript and released under AGPL-3.0. It has 3,014 GitHub stars, 367 forks and 181 open issues, and was last pushed 10 hours ago. On this registry it ranks #4 of 25 tracked projects in ERP & Operations, with 5 head-to-head comparisons available. It gained 8 stars over the last 6 tracked days.

What is Shelf?

What it is

Shelf is a free, open-source platform for tracking physical assets, including equipment, devices, tools, vehicles, props, and inventory. It is built for teams that need to know what they have, where it is, and who is using it. The project sits in the IT asset management, equipment management, scheduling, and operations software ecosystem.

The concrete problem it solves is the lack of a shared record for physical items across locations and people. Organizations can manage thousands of assets across locations with role-based access, while teams can record custody, schedule use, report status, and maintain audit notes.

Key capabilities

  • QR asset tags can be generated, printed, and scanned with any phone to view, check out, or report an asset.
  • Bookings and reservations let teams schedule equipment, prevent double-bookings, and set checkout and return dates with calendar integration.
  • Custody tracking assigns assets to team members, while location management supports hierarchical locations and GPS tagging.
  • Team roles include Owner, Admin, Base, and Self Service, with granular permissions.
  • Custom fields, categories, tags, and kits let users add metadata, group assets, and manage bundles as one unit.
  • Search, filtering, saved presets, CSV import and export, reminders, audit trails, and multi-workspace support cover inventory work and reporting.
  • A built-in scanner supports bulk actions such as assigning custody, updating location, and adding assets to bookings.

Who uses it and how

  • Equipment teams and rental-style operations can use bookings, reservations, and the scanner to schedule items and record who has them.
  • IT and operations groups can track devices, tools, vehicles, and inventory across buildings, floors, rooms, and shelves.
  • Organizations with multiple departments can use multi-workspace support to keep separate inventories and apply role-based access.
  • Users can import spreadsheet data through CSV, then use custom fields, categories, tags, and audit notes for ongoing tracking.
  • Maintenance workflows can use reminders for calibration, warranty expiry, and other scheduled asset events.

Getting started

Typical setup is local development: clone the repository, install with pnpm, configure Supabase credentials, run setup, then start the development server.

When to use it — and when not to

Shelf fits teams that want an open-source asset and booking system instead of spreadsheets, especially when QR scanning, custody tracking, and custom fields matter. Self-hosting requires operating a Supabase or PostgreSQL-backed deployment, configuring authentication, handling SMTP email, and maintaining job queue and payment integrations if used. The repository lists zero contributors and 181 open issues, so operators should expect maintenance work.

project readme (upstream, from github) — read inline

Open-source asset management infrastructure for everyone.

License Deploy Stars Discord

Website · Documentation · Discord · Twitter


Shelf is a platform for tracking physical assets — equipment, devices, tools, vehicles, props, inventory. It's built for teams that need to know what they have, where it is, and who's using it. Organizations use Shelf to manage thousands of assets across locations with role-based access for their teams.

Features

  • QR asset tags — Generate and print QR codes. Scan with any phone to view, check out, or report an asset.
  • Bookings and reservations — Schedule equipment, prevent double-bookings, set checkout/return dates with calendar integration.
  • Custody tracking — Assign assets to team members. Know who has what at all times.
  • Location management — Hierarchical locations (buildings, floors, rooms, shelves). GPS tagging support.
  • Team roles — Owner, Admin, Base, and Self Service roles with granular permissions.
  • Custom fields — Add any metadata to assets: purchase date, warranty info, serial numbers, condition.
  • Categories and tags — Organize assets into categories. Tag for flexible cross-cutting grouping.
  • Kits — Bundle assets into kits (e.g., laptop + charger + dock) and manage them as a unit.
  • Search and filtering — Full-text search with advanced filters. Saved filter presets.
  • CSV import/export — Bulk import assets from spreadsheets. Export for reporting.
  • Asset reminders — Schedule alerts for maintenance, calibration, warranty expiry.
  • Audit trail — Notes and activity logs on every asset.
  • Multi-workspace — Manage separate inventories for different organizations or departments.
  • Scanner — Built-in QR/barcode scanner with bulk actions: assign custody, update location, add to bookings.

Tech Stack

Layer Technology
Framework React Router 7 (React 19)
Language TypeScript 5
Database PostgreSQL via Supabase
ORM Prisma 6
Styling Tailwind CSS 3
Components Radix UI primitives
Auth Supabase Auth (email, SSO)
Job queue pg-boss
Payments Stripe
Email Nodemailer (SMTP)
Build Vite 7, Turborepo
Testing Vitest, Playwright

Getting Started

Prerequisites

Setup

# Clone the repository
git clone https://github.com/Shelf-nu/shelf.nu.git
cd shelf.nu

# Install dependencies
pnpm install

# Copy environment template
cp .env.example .env

Edit .env with your Supabase credentials and other configuration. See the Supabase setup guide for step-by-step instructions.

# Generate Prisma client and run migrations
pnpm webapp:setup

# Start development server
pnpm webapp:dev

The app runs at https://localhost:3000 (the dev server uses HTTPS with local certificates by default).

For detailed setup instructions including SSL certificates and troubleshooting, see the local development guide.

Project Structure

shelf.nu/
├── apps/
│   ├── webapp/          # Main application (React Router + Hono)
│   │   ├── app/
│   │   │   ├── routes/      # File-based routing
│   │   │   ├── modules/     # Business logic (booking, asset, kit, etc.)
│   │   │   ├── components/  # React components
│   │   │   └── utils/       # Shared utilities
│   │   └── public/          # Static assets
│   └── docs/            # Documentation site (VitePress)
├── packages/
│   └── database/        # Prisma schema, migrations, client
└── tooling/
    └── typescript/      # Shared TypeScript config

The monorepo is managed with pnpm workspaces and Turborepo. The @shelf/database package owns all database concerns — schema, migrations, and Prisma client generation.

Commands

Command Description
pnpm webapp:dev Start development server
pnpm webapp:build Production build
pnpm webapp:test Run tests (Vitest)
pnpm webapp:validate Lint + typecheck + test
pnpm webapp:doctor React health scan (react-doctor)
pnpm companion:doctor React Native health scan (react-doctor)
pnpm webapp:setup Generate Prisma client + run migrations
pnpm db:prepare-migration Create a new database migration
pnpm db:deploy-migration Apply pending migrations
pnpm db:reset Reset database (destructive)
pnpm docs:dev Start documentation site
pnpm typecheck TypeScript type checking
pnpm lint ESLint

Deployment

Fly.io

Shelf deploys to Fly.io with GitHub Actions for CI/CD. Pushes to dev trigger staging deploys and pushes to main trigger production deploys; in both cases we run lint, typecheck, test, Docker build, and deploy.

See the deployment guide for full setup instructions.

Docker

Community-maintained Docker support is available for self-hosting. Requires an external Supabase instance.

See the Docker guide.

Documentation

Guide Description
Local Development Full local setup with SSL, monorepo overview
Supabase Setup Database, auth, storage configuration
Deployment Fly.io + GitHub Actions CI/CD
Docker Self-hosted Docker setup
App Configuration shelf.config.ts options
Error Handling Error patterns and conventions
Accessibility WCAG 2.1 AA compliance
Contributing How to contribute

For developer onboarding and codebase conventions, see CLAUDE.md.

Contributing

We welcome contributions. Check the contribution guidelines and look for issues labeled [**"O

readme truncated — read the full docs on github

Frequently asked questions

Is Shelf free to use?

Shelf is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Shelf do?

Track gear, bookings, and inventory without spreadsheets

What is Shelf written in?

Shelf is primarily written in TypeScript. Its source is publicly available at https://github.com/shelf-nu/shelf.nu, and it has 3,014 GitHub stars.