Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
Shelf.nu

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

LayerTechnology
FrameworkReact Router 7 (React 19)
LanguageTypeScript 5
DatabasePostgreSQL via Supabase
ORMPrisma 6
StylingTailwind CSS 3
ComponentsRadix UI primitives
AuthSupabase Auth (email, SSO)
Job queuepg-boss
PaymentsStripe
EmailNodemailer (SMTP)
BuildVite 7, Turborepo
TestingVitest, 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

CommandDescription
pnpm webapp:devStart development server
pnpm webapp:buildProduction build
pnpm webapp:testRun tests (Vitest)
pnpm webapp:validateLint + typecheck + test
pnpm webapp:setupGenerate Prisma client + run migrations
pnpm db:prepare-migrationCreate a new database migration
pnpm db:deploy-migrationApply pending migrations
pnpm db:resetReset database (destructive)
pnpm docs:devStart documentation site
pnpm typecheckTypeScript type checking
pnpm lintESLint

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

GuideDescription
Local DevelopmentFull local setup with SSL, monorepo overview
Supabase SetupDatabase, auth, storage configuration
DeploymentFly.io + GitHub Actions CI/CD
DockerSelf-hosted Docker setup
App Configurationshelf.config.ts options
Error HandlingError patterns and conventions
AccessibilityWCAG 2.1 AA compliance
ContributingHow to contribute

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

Contributing

We welcome contributions. Check the contribution guidelines and look for issues labeled "Open for contributions".

The project uses conventional commits, enforced by commitlint. Pre-commit hooks run ESLint, Prettier, and TypeScript checking via Lefthook.

Join the Discord if you have questions or want to discuss your contribution.

License

Shelf.nu is licensed under AGPL-3.0.

关于 About

A free open source IT asset / Equipment / management and scheduling system.
asset-managementasset-management-systemassets-managementequipment-managementequipment-rentalequipment-schedulingiotiot-applicationitam

语言 Languages

TypeScript99.1%
JavaScript0.4%
CSS0.3%
Python0.1%
PLpgSQL0.1%
Dockerfile0.0%
Shell0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
2747
Total Commits
峰值: 109次/周
Less
More

核心贡献者 Contributors