In Search of Static Forms
Toward the end of the year, someone pointed out to me that our contact form was not working. That caught me by surprise. We transitioned off of google docs and gmail to another provider during the year, as a cost-cutting measure during COVID. This had ramifications that we didn't expect as we had all forgotten that the contact us form was driven by google forms. Oops.
This was actually a good thing.
When we had started out, Google Forms were quick and easy, but they never really fit the aesthetic of our site.
First Idea: Use our CRM
Everyone uses some sort of CRM software. So does Dominion Solutions. We used a free CRM for the past few years but, after looking at the features ours offers, we have found them to be lackluster as all of the features we originally signed up for have been systematically moved behind a paywall. Good for them, they know their value. Unfortunately, as a startup we aren't in the business of putting out money that we don't really have right now.
Second Idea: Find a new CRM
It was a fast and passing thought, but our current CRM ties in with the software we use to do our bookkeeping, Wave (We ♥ them so much that this is not an affiliate link). So that was a non-starter.
What about self-hosting an API that talks to MailGun or a similar service?
This sounded like a great option at first, but the vast majority of them required configurations that would start to get expensive with our cloud provider. The best of the lot, however, if this is the route you'd like to go, seemed to be Formspree. We even went so far as to clone it, and if we had a larger cloud budget, this would definitely have been the way to go.
What about just submitting a form to an API that talks to an SMTP provider?
We thought about this, eventually realizing that this is one of the better solutions in our case. It is exactly what we want. So where to turn? AlternativeTo had a few different suggestiongs, and at the end of the day we settled on GetForm. It was quick, easy, and affordable (in fact, for our use case, free). There are lots of other apis out there that are also equally fantastic.
After getting it all set up, the process went pretty quickly. I had to design a form. Honestly, we've had a subscription to TailwindUI since March of 2020 when they came out.
We say we're all in on privacy, whenever we can. After re-assessing things, we realized all of the APIs out there rely on reCAPTCHA and require importing google libraries. Our problem is that reCAPTCHA can be a bit invasive. We haven't found a library out there that uses hCaptcha or anything similar, so we've decided to launch our own. We'll post a comment or an update here when it gets released, and we will be releasing it to the open-source community. For more information about hCaptcha here's a link: https://www.hcaptcha.com/. After re-assessing, please be on the lookout for a blog post about the release of an hCaptcha-compatible version of staticman as well.
I read about hcaptcha, and then I thought, make people pay money. Gimme a $1 to prove you are human. lol. So I started the gimme-a-dollar on github. No. No I did not really do that.
After some real thought about how to make static forms work, I started working on an open-source application that would do what we need to support better privacy when using Captcha.
It is still a very, very rough draft and has no unit testing associated with it, but it is here: https://gitlab.com/dominion-solutions/contact-form.
It's already got the build file for heroku and should be able to be brought in as an application fairly quickly. This is a personal project for me, where I could experiment with golang. I'd be thrilled to have some comments from any Golang pros that can tell me where I could improve.