GASF Email CRM & Photo Catalogue
Shared-inbox Email CRM + photo catalogue for germantampabay.com — standalone plugin, formerly GASF-Utilities modules 42/43
by German-American Society of Tampa Bay · github.com/germantampabay/gasf-crm · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/germantampabay/gasf-crm/archive/refs/heads/main.zipReadme
GASF Email CRM & Photo Catalogue
The German-American Society of Tampa Bay's shared-inbox CRM and photo catalogue, as a standalone WordPress plugin.
Approved volunteers sign in at /email with Google or Microsoft, read and
answer the club's mail, take in photo submissions, record permissions, tag
people and places, and pull finished photos back out for newsletters and
posters. The full design contract is in
docs/EMAIL-CRM-SPEC.md.
The current workflow re-platform contract is in
docs/WORKFLOW-CONTRACT-PHASE1.md.
Phase 4/5 hardening and rollout contract is in
docs/WORKFLOW-CONTRACT-PHASE4-5.md.
Phase 6 duplicate-action hardening contract is in
docs/WORKFLOW-CONTRACT-PHASE6.md.
Phase 7 replay-safety completion contract is in
docs/WORKFLOW-CONTRACT-PHASE7.md.
History
This lived inside
GASF-Utilities as modules
42/43 plus modules/email-crm/ through utilities v1.90.0, by which point it
was ~18,000 lines wearing a module's clothes. This repo is that code moved,
not rewritten; the 1.x history is in the utilities repo.
Layout
| Path | What |
|---|---|
gasf-crm.php |
Plugin bootstrap: double-load guard, fallbacks for what the utilities plugin used to provide, includes. |
includes/loader.php |
Gate, constants, config, streams, schema/rewrite upgrades. |
includes/email-crm/ |
The CRM proper — auth, Graph sync, REST, UI, photos intake/library/upload. |
includes/photo-catalog.php |
Taxonomies, EXIF, places, the shared people-matcher JS. |
tools/check-js.js |
Pre-commit guard: parses the inline JS and brace-checks the inline CSS that PHP emits. PHP lint sees neither. |
Working on it
Run this before every commit that touches a file emitting `