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.