settings containers - BevvyTech/BrewskiDocs GitHub Wiki

Settings – Containers (/settings/containers)

Purpose

  • Configure the reusable container catalogue (kegs, casks, cans, bottles) that powers batch racking, pricing, and order workflows.
  • Provide tooling to import regional presets, manage default best-before months, and maintain per-container metadata.

Data & Dependencies

  • Lists containers via containersService.list(teamId); create/update/delete actions flow through ContainerDialog helpers hitting POST/PATCH/DELETE /containers/:id.
  • Template installers read COUNTRY_PRESETS; saving default BBE values calls containersService.updateDefaultBbe.
  • When the Breww integration is connected, the sync card queries integrationsService.listBrewwContainerTypes(teamId) (proxy for GET /integrations/breww/container-types) before batching containersService.create installs.
  • Requires active team membership with owner/admin role; operations need an access token.

Key Interactions

  • Toolbar supports column visibility, filtering, CSV export, quick search, and “Add container” (opens modal with validation).
  • Data grid displays name, type, volume, default flag, created/updated timestamps, and action menu (edit/delete).
  • Preset installer card lets users seed region-specific container sets; progress indicator shows while installing.
  • Breww sync card (visible for connected teams) loads available Breww container types, previews them in the same table layout, and lets operators tick specific containers before installing the selected set into the catalogue.
  • Remove unused button (owners/admins only) trims containers not referenced by priced or stocked beers; members see the control disabled with a permission tooltip.
  • Default BBE inputs alongside each row accept month counts, validate ranges (0–1200), and persist asynchronously with inline helper text/errors.
  • Success and error feedback appear via alert banners; skeleton/linear progress states cover initial load and saves.
⚠️ **GitHub.com Fallback** ⚠️