WP Manifestindependent plugin directory
manifest / events / beverage-tracker

Beverage Tracker

Event beverage finder + data model — a generic, standalone fork of OBW Beer Tracker.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/bweibel/beverage-tracker/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

An event beverage finder + data model for beer festivals and similar events. A generic, self-contained fork of the OBW Beer Tracker plugin, stripped of Ohio Brew Week branding and rebuilt to stand alone: no ACF dependency, a settings-driven brand, and a WordPress Playground dev loop.

Beer-shaped, event-neutral. The data model is beer (brewery, ABV, IBU, style, Untappd), but the naming is broad enough for cider / whiskey / cocktail events. A vocabulary/relabel layer (Brewery → Distillery, etc.) is planned but out of the v1 scope.

Status: v0.1.0 — port complete. Every upstream subsystem is ported and wired: PostTypes, Fields (native, no ACF), Settings, both REST controllers (FinderController, TrendController), the ServiceWorker (PWA), the Import\* CSV importer, the Admin\* screens (import/review-queue, print list, trending dashboard), and the Preact finder SPA ([beverage_tracker] shortcode). See the porting map below.

Requirements

  • WordPress 6.5+
  • PHP 8.1+
  • No paid dependencies (ACF Pro is not required — that's the point).

Develop with WordPress Playground

No Local, no database setup, no license:

npm install
npm run playground     # boots WP, mounts this repo as the plugin, activates it

Then open the printed URL. (--auto-mount mounts the repo at wp-content/plugins/beverage-tracker; blueprint.json activates it and logs you in as admin.)

Build the finder SPA

npm run dev            # Vite dev server
npm run build          # production bundle -> build/

The Preact finder app is one of the last subsystems ported (see the map below); until then src/finder/ doesn't exist yet and there's nothing to build.

Architecture

  • beverage-tracker.php — plugin header, constants (BEVERAGE_TRACKER_*), boot.
  • src/autoload.php — dependency-free PSR-4 autoloader for BeerTracker\.
  • src/Plugin.php — thin bootstrap; wires subsystems as they're ported.

Namespace note: the class root stays BeerTracker\ (only the upstream OBW vendor segment was dropped); the public product name and constants are Beverage Tracker / BEVERAGE_TRACKER_*.

Porting map (from upstream OBW Beer Tracker)

Ported one subsystem at a time; each removes its TODO in src/Plugin.php.

Subsystem Status Notes
PostTypes ✅ done CPT slugs beer / venue / brewery (clean, no obw_).
Fields ✅ done Native register_meta + meta boxes — no ACF. Relationships as plain <select multiple> of post IDs. Drop google_map.
Settings (new) ✅ done Name + theme colors (--bt-* CSS vars) + toggles (PWA, trending, Untappd).
Rest\FinderController ✅ done Cached /beverage-tracker/v1/finder payload.
Rest\TrendController ✅ done Anonymous aggregate favorites / tasted.
ServiceWorker ✅ done PWA manifest + SW; name/colors/icons come from Settings.
Import\* ✅ done CSV importer + pending-review store + WP-CLI wp beverage-tracker import.
Admin\* ✅ done ImportPage (upload + review queue), PrintList, DataPage (trending dashboard).
finder SPA ✅ done Preact/Vite app ([beverage_tracker] shortcode). obwf- CSS classes kept as-is for v1.

Upstream source lives at ~/Projects/wordpress/ohiobrewweek/local/app/public/wp-content/plugins/obw-beer-tracker (frozen — do not modify).

Explicitly out of v1 scope

CSS re-prefix (obwf- → bt-), AJAX relationship UI, Google Maps / venue distance, custom logo/icon upload, filter escape-hatches for every setting, the vocabulary/relabel layer, direct Untappd API integration, and multi-tenant / multi-event installs. See DECISIONS.md for the reasoning behind each cut.

License

GPL-2.0-or-later.