01 · The block
firefly/contact-form
Three fields, one submit. Placeholder copy and the button label are editable as block attributes — the markup is fixed so JS bindings stay stable across the editor and frontend.
render.php
index.js
Tell us what you’re building, what you’d want from a forkable WordPress base, or which corner of this demo broke first. A real human reads every message — usually within a day.
The three inputs above aren’t a contact-form plugin. They’re a single firefly/contact-form block — markup in render.php, behavior in contact.js, snippet in source control. Edit it in Gutenberg, sync to a snippet file, ship to live with one CLI command.
Three fields, one submit. Placeholder copy and the button label are editable as block attributes — the markup is fixed so JS bindings stay stable across the editor and frontend.
The frontend script binds to #send-message-btn, validates the three inputs, and POSTs to a custom REST route. Pure vanilla JS — swap it out per project without touching the block.
Saving in Gutenberg syncs the block markup back to snippets/pages/contact.html. One CLI command pushes that file to live dev or production. No FTP, no plugin upload.
Email alex@fireflycreative.io directly. Open a GitHub issue at fireflycreativeio/firefly-collective. Or fork the repo and start sending PRs — that counts as the loudest possible message.