Emerald Curtain Collective
An advocacy action center that any nonprofit can now run for free, plus four more custom WordPress plugins for artist profiles, species education, event check-in, and a ticket waitlist.
The Problem
Emerald Curtain Collective protects Oregon Coast ecosystems through art, education, and community action. It was founded in January 2025, it is run by volunteers, and like most young nonprofits it was assembling its operations out of whatever the plugin directory happened to offer.
That works until it does not. Their events are ticketed and they sell out. Their artist roster appears in a dozen places across the site. Their education program is built on specific coastal species with structured information behind each one. Off-the-shelf plugins covered about eighty percent of each of those, and the missing twenty percent was where the volunteer hours were going.
What I Built
Five plugins, each solving one thing the organization actually does, all running on their WordPress site today. One of them turned out to matter more than the rest.
Action Center
This is the piece I am proudest of. An advocacy tool: an editor writes up a call to action, a petition, a comment period, a demonstration, and it appears on a public listing with a page of its own carrying the reasoning, the steps to take, related links and files, and sample text a supporter can copy and send as their own words.
Two decisions there outlast the field list. An action either has a deadline or is explicitly marked ongoing, because "comment by the 21st" and "this is always true" have to look different to somebody scanning quickly on a phone. And every action publishes to a plain JSON feed, which is what let the same list reach the organization's Threadspore portal without a volunteer ever typing it twice. Members see the campaign where they already are, instead of being asked to go somewhere else and check.
Then it outgrew ECC. Every small nonprofit doing advocacy work has this exact problem and almost none of them can pay for a solution, so I pulled it out of the organization, renamed it, and released it publicly for free. It is a WordPress plugin any org can install, and it updates itself from GitHub the way anything from the plugin directory does. ECC is now simply one of the sites that runs it.
That was the right call and it was not the obvious one. Keeping it bespoke would have been less work and would have looked better on paper as a custom build. Giving it away means maintaining it for people I will never meet, which is a real cost. It is also the only version of this that helps more than one organization.
Artist Profiles
An artist roster with a photo, a biography, and up to four links each, embeddable anywhere on the site through the block editor. The cards render on the server rather than being copied into pages, so updating a profile once updates it everywhere it appears. Nobody has to remember which pages an artist is on.
Wildkin Profiles
Structured profiles for the keystone coastal species in ECC's education program. Volunteers fill in specific fields rather than a blank page, which is the difference between a set of profiles that stay consistent and a set that drift apart as different people write them.
Event Check-In
A check-in tool that lives at a plain address on the site and works on any phone, with no WordPress login and no admin access. Volunteers get a list of the day's events, one-tap check-in, QR ticket scanning through the device camera, walk-in registration, and cash donation logging.
Two decisions in there matter more than the feature list. The QR scanner is bundled with the plugin instead of loaded from a public CDN, so the tool does not depend on a third party being up on event day. And check-ins are optimistic and queued locally, so a volunteer standing in a hall with one bar of signal can keep working and the queue drains when the connection returns.
Event Waitlist
Built because a September gathering sold out and people kept asking to be added to a list that did not exist. When tickets are gone, a signup form appears on the event page. When a spot frees up, an invitation goes out by hand and drops the held ticket straight into the visitor's basket, so the normal checkout runs and the donation step is not skipped.
Inviting by hand is deliberate. Automatic release sounds better until two people claim the same returned ticket, and a volunteer organization would rather send a personal email than manage a race condition.
Built for the Hall, Not the Office
Event check-in happens standing up, on a phone, often in a building with poor reception, run by someone who volunteered an hour ago. That is the environment the tool was designed for rather than a desk.
It installs to a home screen with its own icon, gives audible confirmation on every scan so nobody has to watch the screen, and keeps working when the network does not.
Where It Landed
Action Center is live on the organization's site, it feeds their Threadspore portal, and it is a public plugin any nonprofit can install without asking me or paying anyone. That last part is the outcome worth naming. The work was paid for once, by a volunteer organization on the Oregon Coast, and it now belongs to anybody doing the same kind of work anywhere.
The other four are in production too. The check-in tool runs their events from volunteers' own phones, the artist and species profiles are maintained by the people who know the content rather than by whoever knows WordPress, and the waitlist exists because a real event sold out and real people asked to be told when a seat opened.
None of it needs a developer standing by on event day, which for a volunteer organization is the difference between a tool they use and a tool they are afraid of.
Keep Reading
Product, collaboration software
Threadspore
An invite-only collaboration service for nonprofit volunteer groups, built around the reality that volunteers are not all comfortable with software.
Product, accessibility tooling
Vesper Audit
A desktop accessibility auditing suite used by professional teams to test large public sector sites, and the reason my standards knowledge is first-hand rather than borrowed.
Tell Me What Is Not Working.
A short email is enough to start. Tell me what you are trying to do, or what is getting in the way, and I will tell you honestly whether I am the right person for it.