Skip to Content
Settings

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.

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 periodmonthly or semi-monthly. Determines how /compliance/ttb rolls 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 regimettb or none. 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.
  • Typewarehouse, storage, or tank (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”).
  • Typetank, vessel, or line. 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”).
  • Typeweight, volume, count, or length. 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.

RoleTypical userCan do
adminOwner, head of opsEverything, including settings
production_managerProduction lead, schedulerPlan, schedule, run batches, edit recipes
complianceQC manager, compliance officerTTB records, COAs, audit trail
floor_workerOperators, blendersFloor-execution surfaces (M008+)
read_onlyAuditor, finance reviewerRead 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:

  1. Complete company profile → organization_profile.completed_at is set
  2. Complete compliance profile → organization_profile.ttb_reporting_period is set
  3. Add storage locations → at least one active inventory_locations row
  4. Add work centers → at least one active work_centers row
  5. 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.

Last updated on