Work

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.

Sector
Nonprofit, arts and conservation
Year
2025 to present
Work
WordPress plugins, Newsletter system, Brand
The Emerald Curtain Collective homepage. A dark forest photograph behind the heading We are all in this together, with three cards below it for Our Mission, Get Involved, and Act Now, and an upcoming events list.

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.

The Edit Wildkin Profile screen in WordPress for the Belted Kingfisher, with labeled fields for scientific name, habitat, ESA status, and diet.
What a volunteer fills in. Named fields, not a blank page.
The same Belted Kingfisher record as a visitor sees it: common name, scientific name, a photograph with a credit line, and a Habitat, Diet and Status panel.
The same record, published. Photographer credited automatically.

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.

The check-in tool on a phone for a September 2026 gathering. A Scan button in the header, a search field, an Add Walk-in button, counters reading 0 checked in and 26 remaining, an anonymous headcount stepper, and a list of ticket holders each with a check-in control.

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.

The Action Center page on the ECC site, headed Petitions, public comments, protests, and other ways to support environmental and community-focused causes, with filters by type and organization above a list of urgent actions.

Keep Reading

The Threadspore marketing site, a deep green band headed Made by volunteers, not venture capital.

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.

The Vesper Audit application window showing a finished accessibility report with a severity breakdown.

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.