All features

03 · Store and move

Stock with an append-only history

Bulk quantities and individually serialized devices use different invariants but share locations, movements, assignments and ordering workflows.

MIT licenseSelf-hostableNative iOS client
app.open-inventory.localMock data
Actual Open Inventory stock management with a booking form, locations, and movement history
Stock, incoming and outgoing movements, and history in the running web app · demo data

Scope

What this area changes in the data flow.

Screws need a quantity; a laptop needs an identity. Open Inventory supports both tracking modes and writes each change as a dated movement. Current availability can therefore be reconciled with the events that produced it.

Result 01

Use bulk tracking for interchangeable parts and serialized units for identifiable devices

Result 02

Record issues, returns, transfers and corrections without replacing their history

Result 03

Connect minimum stock, purchase orders, receipts and assembly consumption

Included implementation

Individual capabilities and constraints.

These components are part of the MIT-licensed project. Optional providers are identified where they take part in a workflow.

01

Bulk or serialized tracking

Track identical parts as a quantity or represent every physical unit with a UUID, readable code, state, location, metadata and acquisition date.

02

Append-only movements

Receipts, issues, corrections and transfers are dated and appended. Stock cannot fall below zero, and corrections do not rewrite previous events.

03

Quantity by stock location

Any suitable inventory record can be a structured stock location. Global quantity and distribution across rooms, cabinets or vehicles remain visible together.

04

Inventory count cycles

Schedule recurring counts, process due checks and reconcile quantities by location. Serialized units retain individual traceability.

05

Lending, assignments and reservations

Issue quantities or units to users, other inventory records or free-text recipients. Returns and cancellation restore availability through explicit operations.

06

Minimum stock and forecast inputs

Minimum quantity, reorder amount, lead time and consumption rate produce warnings, an estimated stock-out date and a documented reorder suggestion.

07

Purchase orders and receipts

Record expected quantities and partial deliveries. Receipts are applied through controlled stock movements rather than direct quantity edits.

08

Bills of materials and assemblies

Define assembly components and consume them atomically during a build: either the complete operation succeeds or none of it is applied.

Sequence

Every stock change records its reason

A movement changes more than a displayed number. It records the operation, location and recipient context used to derive the new state.

  1. 01

    Choose a tracking mode

    Use bulk quantities for interchangeable parts and serialized units for devices with their own identity.

  2. 02

    Assign stock locations

    Distribute stock across rooms, cabinets or vehicles while retaining the global quantity and availability view.

  3. 03

    Write a movement

    Receipt, issue, transfer, lending and return operations are validated and appended to the history.

  4. 04

    Review replenishment inputs

    Minimum quantity, consumption and lead time expose low stock and provide inputs for reorder planning.

Worked example

Concrete records, states and decisions.

The values are mock data, but the workflow and state changes correspond to operations implemented by Open Inventory.

concrete example

Example · Makerspace

Count screws, track oscilloscopes individually

M4 screws are stored as a quantity per shelf. Each oscilloscope has its own code, state and location and can be assigned to a person.

Bulk stock

240 screws

Serialized

4 devices

Current operation

1 device issued

Real native Open Inventory app capture with purpose-built demo data
Real SwiftUI app capture · demo data
Open-source iOS implementation

Write stock movements at the shelf.

The iPhone scans a code where a receipt, issue or return happens. The native app uses the same server-side movement history as the web application.

Resolve the scanned record before selecting an operation

Prepare a receipt with a short on-device flow

Require explicit confirmation before executing an issue

Read the native iOS architecture
MIT-licensed source

The ledger lives on the operator's instance.

Movements, units, purchase orders and bills of materials are stored in PostgreSQL. The open implementation makes booking rules inspectable, while scoped API tokens support custom scanner, purchasing and reporting integrations.

Append-only movements rather than silent quantity replacement

Docker Compose and PostgreSQL for the self-operated core

Scoped API tokens for narrowly defined integrations

Next feature area

Codes, labels and API

Labels and software integrations resolve the same records. Scan workflows add preview and confirmation before a stock operation is executed.

Operate your own instance

Start from the documented stack.

Review the Compose services, persistence requirements and provider configuration before exposing an instance to a network.