So here's the thing - I was helping my friend set up his portfolio site last weekend. Everything was going smooth. Nice design, fast site, Vercel hosting on the free tier. Perfect.
Then he goes "I need a contact form."
Cool, I say. Just use one of those form backend services. Easy.
He checks the pricing. "$20 a month?! Just to save some text?"
And honestly? He's right. When did we all just accept this?
This got me thinking
We're paying Netflix money for what's basically a database insert and an email. That's it. Store some text, send a notification.
I spent more time being annoyed about this than I'd like to admit. Then I figured - you know what, I can probably build this myself. How hard can it be?
What I built
FormRelay is pretty straightforward. You point your HTML form at it, it saves the data, sends you an email, and shows everything in a dashboard. That's the whole thing.
The difference? You host it yourself. Your Supabase database. Your Vercel deployment. Your data.
And the best part? Supabase free tier gives you 50k users. Vercel hobby plan is free. Resend gives you 3k emails free per month.
So yeah. $0/month vs $20/month. You do the math.
"But isn't self-hosting complicated?"
This is what everyone says. And look, 10 years ago? Sure. You needed to know server management, deal with security updates, all that stuff.
But now? With Vercel and Supabase?
- Fork the repo
- Click deploy
- Copy paste some environment variables
- You're done
Took me longer to write the README than it takes to deploy this thing.
Compare that to creating yet another account, entering your credit card, dealing with their dashboard, hitting some arbitrary limit, and then having to migrate everything when they raise prices next year.
Which one sounds more complicated?
Here's where I might lose some of you
I think we've gotten too comfortable renting everything.
The whole indie web thing used to be about actually owning your stuff. Yeah, it was messier. Yeah, you had to learn things. But your website was yours.
Now? We just subscribe to everything. And sure, time is money, I get that. Not everyone wants to deal with infrastructure.
But there's this huge gap between "run your own server rack" and "pay someone $300/year to store contact form entries."
That's the gap I'm trying to fill here.
Random things I learned
Next.js 15 is actually good now. After all the App Router drama, it finally feels right. Server actions just work. No more fighting with it.
Supabase is wild. Real-time updates, auth, and actual good documentation? Sign me up.
The hardest part wasn't the code. It was making the setup instructions clear enough that anyone could follow them. Spent way too long on that.
About the email thing
I used Resend because my domain didn't come with email when I bought it, and I wasn't planning to buy email hosting separately. Resend's free tier (3k emails/month) was perfect for this.
But here's the thing - if you already have email with your domain, you can just swap Resend for regular SMTP. It's actually simpler in some ways. Just plug in your SMTP credentials and you're good to go.
So even that "dependency" isn't really a dependency. Use what you've got.
Tech stuff if you care
- Next.js 15 (app router)
- Supabase (postgres + realtime + auth)
- Tailwind CSS
- Radix UI
- Resend for emails (or just use SMTP if you have it)
- Lucide icons
Nothing fancy. Just stuff that works and doesn't break.
You can use it
Whole thing's on GitHub: github.com/Varshithvhegde/formrelay
Live demo: formrelay.varshithvhegde.in
It's MIT licensed. Do whatever you want with it. If you find bugs, let me know. If you want to add features, PRs are open.
The actual point
This isn't really about forms or saving money.
It's about remembering that we can actually build stuff ourselves. We don't need a SaaS product for every little thing. The tools are there. The platforms are free. We know how to code.
A lot of problems that cost $20/month are actually just weekend projects in disguise.
Quick note: Yes, I know SaaS companies provide value. Support, maintenance, features, etc. But for something as basic as form handling? Come on.

Top comments (42)
Well, as you said, the point you are trying to make is,
But the main reason those platforms exist is to reduce development time, development cost, scalability etc.
Many do indeed make their own stuff, I myself have build utility apps that only I use and many of them are either built and hosted on netlify/vercel as you said. But, few things you need to keep in mind in my opinion is that.
TIME: If you invest development time into something already existing you are losing time to make something that does not exist. Which is literally opportunity cost.
COST : If you choose to build something Instead of paying for a platform you are still paying a cost, and the cost is of paying yourself.
Scalability: Generally the platforms providing services have to be compliant with many performance optimization & handle security vulnerabilities which needs to be revisited every now and then. Now, it is true you can handle all of those by yourself. But, it is generally cheaper opportunity cost wise to let it be handled by a company/platform who has developers that are doing the same thing, but because they are selling their service to many customers they are charging less than the cost of effort you would put into the application.
Obviously, its one man's opinion (my opinion in this case), but I feel that if you use a platform for existing services, you get more time to put in more features/ innovations in your application. In the long run, this generally results into more things done with a short span of time.
Say his weekend time that he spent was 150$. Wont this be covered in 6/7 months?
The point was to avoid paying to these SaaS for so simple services, specially when you are a developer yourself.
I agree with what you say ....
But if we are building a portfolio site or a static pages then why not build it .
You are not self hosting when you use Vercel and Suprabase.
The easiest way to build a form I know is using Netlify forms. I looked at the pricing and it is 1 credit per legitimate submission. You get 300 credits for free.
If you get more than 300 mails on your contact form, that means you should start putting money into your website.
I meant to say you can host it yourself not on prem hosting
But was it really necessary to store all the form information in a database and have a dashboard? What about GDPR or other applicable data privacy laws?
If your friend isn't getting flooded with emails it seems to me like simply sending the email to a mailbox would have been much simpler to do. I know that for statically hosted sites this is not an option, but you mentioned that it's deployed to Vercel so you do have access to server functions.
But I also understand that there is a real need for projects like these. I had a quick glance at the code and I'll check it out in more detail after my vacation because this seems like something worth contributing to!
India f*cks GDPR :D
That is a valid point! I mainly built this as a simple side project to make it easier for people to deploy their own instances. Since it is self-hosted, the user retains full control over their data, which helps with privacy concerns.
Thanks for checking it out! Enjoy your vacation, and I look forward to hearing your ideas and seeing your contributions later
Netflix for a database insert and an email??? Netflix ??
"netflix money" -> money which we can use to pay for netflix
Oh okay!! LOL
My bad I should have quoted that
Signs that I'm getting old . . . (but then I have a habit of staying off the internet and get information from books, none of the books I've read have quoted the word "nextflix money") . . . isolation is both good and bad.
😅I mean when I read it myself even I got confused then I added marker to quote but forgot to add that in final draft 😂
Why are forms sometimes perceived as a “Bad Practice”?
Friction: Forcing users to fill out 10 fields (name, surname, phone, subject...) just to send you a question is a barrier. People prefer a direct click on an email (mailto link).
Distrust and Black Hole: Users often do not know whether the form has actually been sent, to whom it has been sent and when (or if at all) they will receive a response. An email in the sent mail gives them a sense of control.
Technical failures: Broken validation, poorly configured SMTP on the server or aggressive spam filters can cause the message to never arrive without one of the parties knowing about it.
Aggressive Captcha: Images of tractors or traffic lights are frustrating for users and reduce the conversion rate.
Nice work
Thanks a lot!
If you found it useful, I’d really appreciate a ⭐ on GitHub:👉github.com/Varshithvhegde/formrelay
Impressive
Thanks
This is super impressive Varshith!
Thank You!!
DIY solutions are great for learning, but the value of paid form services isn’t just storing data. It’s the reliability, deliverability and spam‑filtering they provide. For many sites the hidden cost of maintenance and handling abuse ends up higher than a $20/month subscription.
Exactly i totally agree this solution may not be scalable or reliable there are lots of moving part. But I felt that i could build it so built it ..
Can you develop a medical service appointment application
I can do it if it is "legit"
We can.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.