Install
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.zipAn 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 forBeerTracker\.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.