← All courses

Beginner · A weekend, at your own pace

Build your own Markdown blog

Go from an empty folder to a custom Astro blog on your own domain, with private GitHub source and automatic Cloudflare deployments.

Start course12 core lessons + 2 optional labs

No account needed to start.

Build a place for your writing that you can understand, customize, and take with you. This course follows the decisions behind this site: ordinary Markdown, private source, a quiet reading layout, and managed hosting.

What you will build

A homepage, writing archive, About page, Markdown articles, deliberate draft controls, system-aware dark mode, RSS, a sitemap, HTTPS, and automatic deployments from a private GitHub repository.

By the end, you will also know which service owns each part of your setup and how to investigate or undo a failed release.

Before you start

You need a computer on which you can install software, a browser, and time to try the examples. No Astro experience is required. Basic HTML and CSS will help; the course supplies the complete core files. GitHub and Cloudflare accounts are needed later. You can finish the local lessons before buying a domain.

The examples were checked with Node.js 24, pnpm 11.19.0, and Astro 7.3.3. Domain registration and renewal cost money; the hosting path starts on Cloudflare’s Free plan. Provider screens and allowances can change, so each relevant lesson links to official documentation.

Follow the core path first

Lessons 1–12 form a complete, runnable blog tutorial. Each lesson has an outcome, code, an exercise or checkpoint, and a next step. Work through them in order and use your own account values wherever you see a placeholder.

The two optional comments labs cover identity, moderation, CAPTCHA, and background AI screening. They are advanced implementation plans and acceptance checks, rather than a complete copy-and-paste backend. The core blog works without them.

Keep learning at your pace

Reading never requires an account. Mark lessons complete when you finish their checkpoints, and bookmark pages you want to revisit. Guests can keep progress in this browser. Optional Google sign-in lets you sync your learning across devices.

The syllabus

  1. 01Choose your setup before creating accountsdecide what you are building, where each part belongs, and which identity will own it.○
  2. 02Prepare your computeryou can run Node.js, pnpm, and Git and edit a project folder.○
  3. 03Build the site shella local Astro site with a homepage, About page, navigation, and a missing-page message.○
  4. 04Write in Markdown and publish deliberatelyMarkdown articles have their own URLs, appear in an archive, and remain private until you explicitly publish them.○
  5. 05Design for reading and follow system dark modea simple reading layout with System, Light, and Dark choices that work across pages.○
  6. 06Add feeds, metadata, and release checksreaders can subscribe, search engines receive useful metadata, and one command checks the public build.○
  7. 07Put your source in a private GitHub repositoryyour files and history are stored in a private repository, ready for automated builds.○
  8. 08Deploy the static blog to Cloudflare Workersthe built blog has a public HTTPS address, before you change any DNS.○
  9. 09Connect your domain without losing emailyour canonical domain serves the blog over HTTPS, and existing mail still works.○
  10. 10Redeploy when the repository changesa verified push to `main` builds and deploys the blog automatically.○
  11. 11Make the blog yours and publish a real postthe site reflects your own identity, design choices, and writing.○
  12. 12Maintain the blog and recover from mistakespublishing becomes a repeatable habit, and you can identify what to restore when something fails.○
  13. 13Optional lab: comments, CAPTCHA, and owner identityOptional advanced lab○
  14. 14Optional lab: background spam screening with room to recoverOptional advanced lab○

Last reviewed October 6, 2026.