From $60/Month to Free Website Hosting
I’m not a website designer. But over the years, as the person in the family closest to anything web-related, I became the go-to when someone needed a site. It started with my father-in-law asking if I could build a website for his construction business. Then my uncle-in-law needed one for his car wash in Slovakia. Then my wife launched a wedding planning business and needed her own site too.
I took each of these on as a learning project. What I didn’t expect was how much the approach would evolve, or how much money I’d end up saving. Here are the three sites running today, all hosted for free:
- janjakubconstruction.com (construction and handyman services)
- autoumyvarenpelikan.sk (car wash in Slovakia)
- dashasdivineevents.com (wedding and event planning)
This post is about how I got there and what I learned along the way.
The $60/Month Starting Point: Wix
My first instinct was Wix. It’s the obvious choice when you’re not a developer. Drag and drop, pick a template, publish. It worked, but at roughly $20/month per site, three sites meant $60/month. That’s $720 a year just to keep some simple small business websites online. For sites that mostly need to look professional and have a working contact form, that felt like a lot.
Round Two: WordPress
Looking for more flexibility and better cost optimization, I explored WordPress. I migrated my wife’s wedding planning site to a WordPress setup with a polished prebuilt template. It looked great and gave me more control over the design. But WordPress comes with its own overhead: hosting fees, plugin updates, security patches, and the general maintenance of keeping a CMS running. It was better than Wix, but I knew there had to be a simpler way.
Building in Code with AI ($8/Month)
This is where things got interesting. As generative AI tools like Claude got better at writing code, I found that I could build these sites directly in code rather than relying on a CMS. I’m not a frontend developer by trade, but with AI assistance I could build clean, responsive sites that looked just as good as anything from a template, and I understood exactly what was running under the hood.
I rebuilt the sites and hosted them on my own VPS for about $8/month total. I was genuinely excited that the only costs were my server and the domain names. Full control, massive cost reduction from where I started. But now I was responsible for server management: keeping the OS updated, managing SSL certificates, monitoring uptime, and handling backups. It worked, but it was one more thing to maintain.
The Final Move: $0 with Cloudflare Pages
Then I discovered Cloudflare Pages. Free static site hosting. Automatic deployments from GitHub. A global CDN across 300+ cities. HTTPS out of the box. No server to manage at all.
I realized my VPS was unnecessary. I migrated all three sites to Cloudflare Pages, and my monthly hosting cost dropped to zero. The only recurring expense is the domain names themselves, which run about $10-15 per year each. That’s it.
Here’s the full stack I’m running for all three sites.
The Stack
- Astro: A modern framework that generates static HTML at build time. No server to maintain, no database to manage.
- Cloudflare Pages: Free hosting with automatic deployments from GitHub, global CDN, and HTTPS out of the box.
- Cloudflare Pages Functions: Serverless functions for backend logic like contact forms. Runs on Cloudflare’s edge network.
- Cloudflare Email Routing + Email Workers: Free email forwarding and auto-responders for your custom domain.
- Resend: An email API with a generous free tier of 100 emails per day. Handles the actual email delivery from contact forms.
Every one of these services has a free tier that’s more than enough for a typical small business website.
What You Actually Get
For each of these sites, the setup delivers:
- A fully responsive, professionally designed website
- A working contact form that sends submissions directly to your inbox
- Custom email addresses on your domain (like info@yourbusiness.com) that forward to your personal email
- Automated confirmation emails so customers know their message was received
- Anti-spam protection using Cloudflare Turnstile (no annoying CAPTCHAs for your visitors)
- Global CDN with automatic HTTPS, meaning your site loads fast from anywhere
All of this used to cost me $60/month across three Wix sites. Now it costs $0.
How It Works
1. Build with Astro
Astro generates static HTML at build time. The output is a folder of plain HTML, CSS, and JavaScript files ready to deploy. No server runtime, no ongoing maintenance. And with AI coding tools, you don’t need to be a frontend expert to build something that looks professional.
npm create astro@latest my-site
cd my-site
npm run build
2. Deploy on Cloudflare Pages
Connect your GitHub repository to Cloudflare Pages. Every push to your main branch triggers an automatic build and deploy.
- Go to the Cloudflare dashboard, then Pages, then Create a project
- Connect your GitHub repo
- Set the build command to
npm run buildand output directory todist - Deploy
Your site is live on a global CDN with HTTPS. No configuration needed.
3. Add a Contact Form with Resend
Resend is an email API that makes it simple to send transactional emails. Their free tier covers 100 emails per day, which is well beyond what most small business contact forms will ever need.
Create a serverless function at functions/api/contact.ts that receives form submissions and sends them to your inbox through Resend:
export const onRequestPost: PagesFunction<{
RESEND_API_KEY: string;
RESEND_FROM_EMAIL: string;
RESEND_TO_EMAIL: string;
}> = async (context) => {
const formData = await context.request.formData();
const name = formData.get('name');
const email = formData.get('email');
const message = formData.get('message');
const response = await fetch('https://api.resend.com/emails', {
method: 'POST',
headers: {
'Authorization': `Bearer ${context.env.RESEND_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
from: context.env.RESEND_FROM_EMAIL,
to: context.env.RESEND_TO_EMAIL,
subject: `New message from ${name}`,
html: `<p>From: ${name} (${email})</p><p>${message}</p>`,
}),
});
return new Response(JSON.stringify({ success: true }), {
headers: { 'Content-Type': 'application/json' },
});
};
This runs on Cloudflare’s edge network. No server to manage, no monthly bill.
4. Set Up Email Forwarding
Cloudflare Email Routing lets you create email addresses on your domain and forward them to your personal email at no cost. You can also set up an Email Worker to send automated confirmation replies to anyone who reaches out.
If you’re in a similar situation, the family tech person getting asked to build websites, I hope this saves you some time. The tools available today make it realistic for anyone with some technical curiosity to put together professional sites without monthly hosting bills. If you have questions or want to compare notes, feel free to use the contact form below or reach out on LinkedIn.