Description
Holdroom is a local parcel desk for a shop counter. Staff log a parcel, put it on the shelf, mark it ready, and record pickup or return. Records live in a SQLite file on the machine. The app does not contact a carrier, send a text, or take payment.

Features
- Queue, intake, parcel, and settings pages
- Ticket codes with an HR- prefix
- Allowed status moves: received to ready, then picked up or returned
- A1-style shelf labels
- Desk name on the Settings page
- Sample parcels you can replace
Tech stack
- Node.js 22
- TypeScript
- SQLite via the experimental node:sqlite module
Requirements
- Node.js 22 or newer
- npm 10 or newer
How to install and run
- Unzip the archive and open the folder
- Run
npm install, thennpm run dev, and open http://127.0.0.1:47821 - Database file:
data/holdroom.sqlite. Override it withHOLDROOM_DBand the port withPORT - Checks:
npm test,npm run lint,npm run typecheck, andnpm run build npm run buildwritesdist/server.js.npm startruns that file.
How to rebrand
- Desk name: Settings page
- Sample parcels:
seedinsrc/db.ts - Colors and type: the style block in
src/views.ts - Ticket prefix HR-:
nextCodeinsrc/logic.ts - Allowed status moves:
allowedMovesinsrc/logic.ts
What’s included
- Full Node.js / TypeScript source
- Tests, lint, and typecheck setup
- README with install, rebrand, and project layout
- LICENSE (one end product)
Limitations
- One SQLite file, no accounts, no network tracking.
- Storage uses the experimental node:sqlite module in Node.js 22.
- A parcel can move from received to ready, then to picked up or returned. It cannot skip ready.
- Shelf codes are A1 style labels, not a warehouse map.
- Phone numbers are checked for length only. No SMS is sent.
- This is a counter log, not a carrier integration.
License
Commercial license: use the source in one end product (one app, site, or service) for yourself or one client, free or paid. Reselling or publishing the source as a template is not allowed. Full text is in the LICENSE file.









Reviews
There are no reviews yet.