The target for this site is zero hosting cost at launch. That is a constraint, not an ideology. It shapes the architecture in useful ways.
These notes record what the free plan covers today. Limits change; verify them before relying on any number here.
Workers
Workers run the server-side application. The free plan includes a daily request allowance and a CPU-time limit per request. For a personal site, the request allowance is generous. The CPU limit is the one to watch: image processing, large queries, and heavy rendering are the expensive operations.
The practical rule: keep requests small, cache aggressively, and do expensive work at build time whenever possible.
D1
D1 is the relational database. The free allowance is measured in rows read and rows written per day, not in storage alone. A page that runs an unbounded query on every request can burn through reads surprisingly quickly.
Indexes and pagination are not optimisations here. They are part of staying inside the plan.
R2
R2 stores media and has no egress fees, which is the main reason to prefer it over a general object store for a site that serves images. The free storage allowance is enough for a personal archive if images are compressed and old originals are not kept forever.
What is not free
A custom domain is cheap but not free. Email is not free at any serious volume. A newsletter provider will be the first recurring cost, which is why the plan starts with RSS and adds email later.
The real constraint
The free tier is not the hard part. The hard part is designing so that a traffic spike does not turn into a bill or an outage. Static pages, cached responses, and a database that is queried deliberately do more for that than any plan upgrade.