Lesson 1 · Core course

Choose your setup before creating accounts

decide what you are building, where each part belongs, and which identity will own it.

Sign in to save progress across devices

On this page

Start with the writing

Write a one-sentence description of your blog and list three topics you might write about. For example: “A place for essays about identity, relationships, and software.” This gives you a reason to choose a quiet reading layout instead of a busy magazine theme.

Our content format is ordinary Markdown. A post is a text file with a small metadata section at the top. You can edit it in many tools, review its changes in Git, and move it to another publishing system later. Interactive components can be added with MDX later; they are not required for this course.

The first release needs a homepage, archive, About page, and a first post. Leave comments, analytics, newsletters, search, and subscriptions for later unless they are essential to your purpose.

Give each service one job

Part Job in this course
Your computer Edit content and preview the site
Astro Turn templates and Markdown into HTML during a build
Git Record changes and let you return to earlier versions
Private GitHub repository Store source and trigger deployments
Cloudflare Workers Static Assets Serve the generated site
Domain registrar, such as Porkbun Register and renew your domain
Cloudflare DNS Answer DNS queries for the domain after migration
Existing mail provider Receive, forward, or send your email

A DNS move is separate from transferring the registration. You can keep Porkbun as registrar while Cloudflare hosts DNS. Email is another independent service; we will preserve its records in Lesson 09.

Why this hosting path?

Astro can publish static files to many providers. Here is the decision that led to this course:

Option Appropriate when Additional work to consider
Cloudflare Workers Static Assets You want a static blog with room for a small Worker API Cloudflare DNS for the Workers Custom Domain path; separate limits for dynamic features
Firebase Hosting You already prefer the Firebase ecosystem Track its storage/transfer allowances and CI setup
Netlify You prefer its deployment workflow and integrations Review current plan allowances and usage billing
Cloud Run Your site requires a containerized server or backend Container operations, billing setup, and domain routing

This is an architectural comparison, not a price quote. Our mostly static blog does not need a container server. Cloudflare documents free static-asset requests; dynamic Worker execution and builds have their own allowances. Check Workers pricing before selecting a plan. A domain renewal is still a separate expense.

Choose an account you can recover

Use an account you expect to keep for years. Enable multifactor authentication and store recovery codes privately. For a personal blog, a durable personal email is often a useful recovery identity, especially before domain email is configured.

Keep these roles distinct:

  • Provider login: the identity controlling hosting and DNS.
  • Public contact address: what readers see on the site.
  • Comments owner: the verified identity allowed to moderate comments, if you add them.

Those roles can use different addresses. A forwarding alias does not automatically become a Google account. Two Google accounts can also show the same display name. We will test actual account identity if we build sign-in.

Choose a repository name such as my-blog, a Worker name such as my-blog, and a canonical domain such as example.com. Keep the Worker name consistent through every later configuration.

Checkpoint and exercise

Write down your blog purpose, three topics, domain choice, registrar, existing email provider, repository name, and hosting account identity. Store the account details privately; they do not belong in a public article.

You can explain why the source repository will be private while the generated website will be public. You have chosen a simple first release rather than waiting for every optional feature.