Settings
Settings is where you tell vestl about your business — your legal identity, your TTB permit, your locations, your tanks and lines, your unit conversions, and your users. Most of it is set once at onboarding and rarely touched afterwards. Get it right here and the rest of vestl works.
The settings cluster lives at /settings with the following sub-pages:
/settings/company— Company profile (legal identity, TTB permit, defaults)/settings/compliance— Compliance defaults (TTB reporting period, license info)/settings/locations— Inventory locations (warehouses, storage rooms)/settings/work-centers— Tanks, vessels, and packaging lines/settings/uom— Units of measure and conversions/settings/users— Users and role assignments/settings/general— Misc preferences
This doc covers what each surface owns and the field-by-field meanings that tooltips should mirror.
/settings/company — Company profile
Your business’s legal and operational identity. The fields here populate downstream documents (POs, invoices, COAs, TTB records).
Identity section
- Legal name — the entity name on your TTB permit and tax filings (e.g. “Brella Beverage Co LLC”). Appears on every external document. Edit at your own risk — changing it without updating your TTB permit is a compliance issue.
- Trade name (DBA) — the customer-facing brand name if it differs from the legal name. Optional. Used on invoices when present.
- EIN — your federal Employer Identification Number. Used on AP/AR documents and tax filings. Stored once, used everywhere.
Logo
An image used on PDF outputs (invoices, packing slips, COA reports, TTB report cover sheets). PNG or SVG; ~256×256px works best.
TTB basics
- DSP number — your federally-issued Distilled Spirits Plant number. Load-bearing — every TTB Batch Record copies this in. See TTB Batch Records for format details.
- TTB reporting period —
monthlyorsemi-monthly. Determines how/compliance/ttbrolls up batch records into reports. Most producers are monthly; semi-monthly is reserved for high-volume operations.
Contact
The default contact for vendor-facing communications (POs, vendor inquiries). Different from individual user accounts — this is the “info@” of your operation.
Preferences
Defaults applied to new records: default UoM for new products, default currency for new POs, default work week (5 day vs 7 day).
”Incomplete” pill
Shown top-right when any required field is blank. The setup checklist on /planning reads this state to mark “Complete company profile” green.
/settings/compliance — Compliance defaults
Higher-level compliance settings that apply across the operation rather than to a single batch.
- TTB reporting period — duplicate of the company profile field; either page can edit it. The setup checklist treats this as the gate for “Complete compliance profile.”
- Default product compliance regime —
ttbornone. Applied as the default when creating a new product. Override per-product on the product detail page. - License information — state-level alcoholic beverage licenses. Free-text for now; vestl plans to model this more rigorously later.
/settings/locations — Inventory locations
Where physical inventory lives — warehouses, cold rooms, packaging staging areas, generic storage. Tanks and lines are configured separately at /settings/work-centers.
Field reference
- Name — unique identifier (e.g. “Main warehouse”, “Bond room”). Shown in lot detail and inventory transfers.
- Type —
warehouse,storage, ortank(tanks are usually configured as work centers, but legacy data may have them here). - Capacity qty / UoM — optional. When set, vestl warns if a transfer would exceed it.
- Active — inactive locations are hidden from new-receive/transfer pickers but kept for historical lookup.
- Allows negative — rare; permits negative on-hand for transit/virtual locations.
The setup checklist treats “Add storage locations” as complete when at least one active location exists.
/settings/work-centers — Tanks & Lines
Production capacity. A work center is a tank, vessel, or packaging line where work is performed. Page heading is “Tanks & Lines”; each row is labeled tank, vessel, or line based on work_center_type.
Field reference
- Name — unique identifier (“Fermenter 3”, “Bottling line A”).
- Type —
tank,vessel, orline. Drives which production steps can be scheduled here (you don’t bottle on a fermenter). - Capacity qty / UoM — useful capacity. Validated against batch volumes during scheduling.
- Active — inactive work centers don’t show up in scheduling pickers.
- Notes — free-text (calibration date, last cleaning, ownership).
The setup checklist treats “Add work centers” as complete when at least one active row exists.
/settings/uom — Units of measure
The conversion table. Defines all units (gallons, liters, kilograms, cases, each) and the conversions between them. Used everywhere a quantity changes hands between a vendor unit and an inventory unit, between recipe units and batch units, between bottle volumes and case volumes.
Field reference
- Code — short identifier (
gal,L,kg,lb,case,each). - Name — human-readable (“Gallon”, “Kilogram”).
- Type —
weight,volume,count, orlength. Conversions only work within a type — you cannot convert kilograms to liters without a density value, which vestl doesn’t model. - Conversions — for each pair, a multiplier (e.g.
1 gal = 3.785 L).
Most of this is seeded at onboarding and rarely changed. Adding a new UoM is rare; it usually means a new product line uses an unfamiliar unit (e.g. shipping in pallets).
/settings/users — Users and roles
Who can do what. Two halves:
User list
Every account that can sign into vestl. Fields: name, email, role, last login, status. Provisioned via SSO (Google) or invite-by-email.
Permissions matrix
Documents which roles can do which actions across each surface. Source of truth is the server-side requireRole middleware on each route — the matrix is describing reality, not configuring it.
| Role | Typical user | Can do |
|---|---|---|
admin | Owner, head of ops | Everything, including settings |
production_manager | Production lead, scheduler | Plan, schedule, run batches, edit recipes |
compliance | QC manager, compliance officer | TTB records, COAs, audit trail |
floor_worker | Operators, blenders | Floor-execution surfaces (M008+) |
read_only | Auditor, finance reviewer | Read everything, mutate nothing |
A user has exactly one role. To temporarily elevate, change the role and revert when done — every change is audit-logged.
/settings/general — Misc preferences
The catch-all. Date/time format, timezone, default page (which surface to land on after login), feature toggles for unreleased capabilities. Most of this is one-time setup; a few items are user-level overrides at /profile.
How settings connect to the setup checklist
The /planning setup checklist reads from settings to compute progress. Five of its 10 rows are settings-anchored:
- Complete company profile →
organization_profile.completed_atis set - Complete compliance profile →
organization_profile.ttb_reporting_periodis set - Add storage locations → at least one active
inventory_locationsrow - Add work centers → at least one active
work_centersrow - Add users → not currently a checklist row (admin-only setup)
The other 5 rows live in /parties, /products, /product-specs, and /batches.
What you can’t do here
- Delete a TTB DSP number after a record references it. You can change the field, but the historical TTB records keep the original — this is by design (audit trail).
- Change a UoM’s type after products use it. A weight-typed UoM cannot become volume-typed; create a new UoM instead.
- Inactive a location with on-hand inventory. Move the inventory first.
- Inactive a work center with scheduled MOs. Reschedule the orders first.
These are guardrails against destructive edits that would corrupt downstream records.