How I host my sites and lightweight web apps
My Astro, GitHub, and Cloudflare Pages setup for sites and lightweight web apps, with $0 hosting within the free tiers and optional automations when a project needs more.

I like building things. I don’t particularly like adding a monthly hosting bill every time I have another idea.
For my newer content sites and lightweight web apps, I’ve been using Astro, GitHub, and Cloudflare Pages. GitHub Actions handles the build and deployment.
My own site uses this setup. It’s easy to reuse, and for projects that fit within the free tiers, hosting and builds can cost $0. I still pay for domains and any separate services the project needs.
I’m talking about websites and small apps that don’t need their own database. If an app needs a database, I’d go with a VPS or another cloud hosting setup suited to the application. More on that below.
How it works
This is the publishing flow. Any forms or backend services are separate.
Astro builds the site. I use its static output, which means the pages are generated before someone visits. The browser loads the finished files rather than asking an application server to build each page on demand.
That still leaves room for interactive features. A calculator, quiz, or small browser-based tool can work this way. Static hosting doesn’t mean everything on the screen has to sit there doing nothing.
GitHub holds the code and content, along with the history of what changed. If I break something, I can go back and see what I did. The repository can be private, too.
When I push changes to the main branch, GitHub Actions runs my checks, builds the site, and uploads it to Cloudflare Pages. Cloudflare serves the finished website.
I still review the changes. I just don’t have to repeat the deployment steps by hand every time I fix a sentence.
Cloudflare also has a built-in Git integration. I use GitHub Actions because I want the checks and deployment in the same workflow. You don’t need both.
Where I’d use it
This is a good fit for a business website, personal blog, or project page. I’d also use it for documentation, event information, and a landing page to test an idea before building the full product.
Lightweight web apps fit here too. Think pricing calculators, checklists, or tools that process something in the browser without saving it to a database.
A resource directory or public dashboard can work if its data comes from files or gets pulled in during the build. When the information changes, you rebuild the site.
The question I ask is pretty simple: can this run as finished pages with a little browser-side code? If yes, I don’t need to start by setting up an application server.
What about forms and automations?
Free hosting doesn’t mean the site can only display information. With a little extra setup, forms and other actions can connect to external services through API calls and webhooks.
For example, my contact form sends submissions through a Cloudflare Worker to n8n on a small VPS, which handles the workflow and passes the details to my CRM. Cloudflare can handle simple backend tasks directly too; n8n is just what I use for my workflows.
Those extras have their own limits and possible costs. My VPS isn’t free, but it’s separate from the website hosting. I only add that extra setup when a project needs it.
If it needs a database, I’d choose something else
For anything that needs its own database, I’d use a VPS or another cloud hosting setup that fits the app.
The options I’d look at:
- A VPS when I want control over the app and database. I handle the server updates, backups, and maintenance.
- Managed app hosting when I’d rather let a provider handle more of the infrastructure and spend my time on the app.
- A hosted backend when I need a database, user accounts, or file storage without building all of that myself.
I’d choose based on what the app needs and how much I want to manage, not just which option starts out free.
About the free part
Free tiers have limits, so I check them before launching.
GitHub Actions usage depends on the repository and account plan. Cloudflare Pages has its own platform limits. Custom domains cost money, and things like email, forms, or paid APIs can add to the bill.
I’ve linked the pricing and limits below rather than turning this into a list of quotas that might change. The point is that a small site can run without a separate monthly hosting subscription, not that every project will cost nothing forever.
Once this setup works, I can reuse it for the next site with its own repository, Pages project, and configuration. That’s the part I like most: less time setting up hosting, more time working on the thing I wanted to build.
I already have enough unfinished ideas. They don’t all need a subscription.
References
The best ideas arrive in your inbox.
One thoughtful monthly edition with practical lessons and things I'm building.