Subscribe

“It’s just a contact form.“

I was so wrong. So, fucking wrong. I don’t know if I’m just dumb, stubborn, or a combination of both. But this one goddamn feature took over everything. It got to the point where I was ready to throw everything away and start over. Maybe this time I could stop with the fancy features like a blog, pages, and contact form. I could easily return to perfection. A simple .MD page.

I thought I was being crazy or dumb. There had to be a way to make a simple contact page. I mean, every site has one. So, I went to work and researched how the fuck everyone else can do it but me.

The findings: no one is certain. I realized there are entire businesses built around contact forms. A huge reason boring and sterile website builders are so widely used is that they do all the bullshit for you. It all made sense. Email infrastructure is genuinely tedious. The fact that spammers navigate this at scale is almost impressive, and all I wanted was for people to be able to send me pet photos and stuff.


The Tunnel

I looked it up. Forms aren’t just UI. They’re distributed state machines spanning client, server, and email. Every field is another place something can fail. This was not comforting.

Now, after some time researching, I had not produced much. So I marched back into the tunnel hoping to see light at the end at some point. At this point, I started stripping back features. The first one to go was ReCAPTCHA. I wanted protection, but it wasn’t working and might have been the problem, so it had to go. Plus, there was a video about them being spyware anyway. So begone, annoying boxes and AI-generated image rotating test thing.

The next darling to be killed was image upload. Fuck that; it confuses me, and all the horror stories on ServerlessHorror start with some image upload. So that was taken out back and gotten rid of. Now with those two removed, it’s finally time to talk about Resend itself.

Resend, honestly, seems surprisingly good. Of all the options like SendGrid and the like, Resend has the nicest onboarding and implementation. Somewhere along the chain between GitHub, Cloudflare, and Resend, the contact form was breaking. It was working locally, no problem. I had set the keys and variables the same for both my .env and Cloudflare variables plus secrets. But I kept bouncing between 405, 500, 404, and the most confusing 200. The env var was RESEND_API_KEY locally but Cloudflare wanted RESEND_KEY and I lost 3 hours to a typo. The void consumes whatever was sent.


The light

49 commits later: 21 of them rebuilding the entire site, 28 trying to fix the contact form.

Here is the commit history in order.

  • First commit of personal Site …
  • Blog post>
  • Markdown fix>
  • Add mobile menu>
  • resend email fix>
  • node added for fix>
  • Holyshit I broke everything, I hope this fixes i…>
  • react@17>
  • resend fix>
  • everything fixed>
  • ?>
  • .?>
  • cleaned thing … © origin/main>
  • resend fix>
  • resend is fighting me>
  • I think I’m dumb>
  • debug>
  • testing>
  • I dumb for sure>
  • hmmmm
  • huhhhhh>
  • Email will be the death of me …>
  • isuebrfv>
  • Delete dist/functions directory Jonathan Reed>
  • maybe>
  • I have evertyig>
  • Holyshit, I think i was just being dumb …>
  • erivon Codedebug>
  • captcha replaced with honey pot>
  • fuck my life>
  • I pray>
  • egodeath>
  • hope>
  • im dumb>
  • resureaction>
  • Final for night>
  • Finfal FInal>
  • A nights sleep>
  • simplflify test>
  • please>
  • FUck Forms>
  • testing testing 123 123>
  • Remove email API endpoint and update Astr…>
  • hmmm>
  • life sucks>
  • hated>
  • testing>
  • Holyfuck I think it works

If you want to say hello or just see it working, check it out

Contact Page


Thanks for reading!

Feel free to share this blog or reach out to me on LinkedIn