Inven is a single-container inventory management system for Unraid-style deployments. It manages stocked parts, assemblies built from parts, sales orders and shipping, purchase orders and restocking, customers, vendors, and a lightweight accounting journal on top of SQLite.
## Current Scope
- Parts and assemblies share one item master
- Assemblies support bill-of-material component definitions
- Inventory is tracked through a transaction ledger
- Sales orders can be created and shipped
- Purchase orders can be created and received
- Sales orders support partial shipments
- Purchase orders support partial receipts
- Invoices are generated from shipped sales orders
- Vendor bills are generated from received purchase orders
- Customer and vendor payments can clear receivables and payables
- Customer and vendor directories support the order flows
- Low-stock and suggested reorder views help drive replenishment
- A chart of accounts, account balances, and manual journals support the first accounting pass
- Built-in authentication protects the app with a bootstrap admin login
## Stack
- Next.js App Router
- TypeScript
- SQLite via `better-sqlite3`
- Single Docker container with Next.js standalone output
## Quick Start
1. Install Node.js 22 or newer.
2. Copy `.env.example` to `.env`.
3. Set `AUTH_SECRET`, `ADMIN_EMAIL`, and `ADMIN_PASSWORD`.
4. Update `DATABASE_PATH` if needed.
5. Install dependencies:
```bash
npm install
```
6. Start the development server:
```bash
npm run dev
```
7. Open `http://localhost:3000` and sign in with the bootstrap admin credentials.
The SQLite schema is created automatically on first run.
If the database has no users yet, the bootstrap admin user is created from `ADMIN_EMAIL` and `ADMIN_PASSWORD`.
## Docker
Build and run locally:
```bash
docker build -t inven .
docker run --rm -p 3000:3000 -v $(pwd)/data:/data inven