# Ship Your First Astro Site > From zero to a deployed static site in 45 minutes — content collections, islands, and the mental model that makes Astro click. > > 2026-06-10 — y7.hk ## Why Astro Astro ships zero JavaScript by default. Your content renders to plain HTML on the server, and interactive islands hydrate only where you ask for it. For a content-heavy personal site — blog, research, galleries — that is exactly the trade you want. ## The 45-minute path 1. `npm create astro@latest` — pick the blog template, TypeScript strict. 2. Define a content collection in `src/content.config.ts` with a zod schema. 3. Write your first `.mdx` post — frontmatter is validated at build time. 4. Add a `[slug].astro` page with `getStaticPaths()` + `render()`. 5. Deploy: `astro build` produces a fully static `dist/` you can host anywhere. ## Islands: the part people miss ```astro ``` Reach for `client:visible` on anything below the fold. Your Lighthouse score will thank you. ## What's next Add i18n with `[locale]` dynamic routes — covered in the [i18n tutorial](/tutorials/i18n-for-static-sites/).