Getting Started with Astro

Astro is a modern static site generator that allows you to build faster websites with less client-side JavaScript. It combines the best parts of various frameworks and tools to create a unique developer experience.

What Makes Astro Special?

Astro introduces a new architecture for building websites that’s called Islands Architecture. This approach delivers zero JavaScript by default, but allows you to add interactive components when you need them.

Key Features

  • Zero JavaScript by default: Astro strips away all unnecessary JavaScript automatically
  • Island Architecture: Add reactivity with your favorite UI framework only where needed
  • Server-first API design: Move expensive hydration off of your users’ devices
  • Edge-ready: Deploy anywhere, even global edge runtimes like Deno or Cloudflare
  • Customizable: Tailwind, MDX, and 100+ integrations to choose from

Basic Usage

Creating a new component in Astro is straightforward:

---
// Your component script goes here!
// This code runs at build time in Node.js
const name = "Astro";
---
<!-- Your component template goes here! -->
<div>
  <h1>Hello {name}!</h1>
</div>

<style>
  /* Your component styles go here! */
  h1 {
    color: red;
  }
</style>

Building Pages

In Astro, pages are just special components that live in the src/pages/ directory. When you create an .astro file in this directory, it automatically becomes a route based on its filename.

Using Content Collections

Content collections are a powerful way to manage your Markdown content:

// src/content/config.js
import { defineCollection, z } from 'astro:content';

const blogCollection = defineCollection({
  schema: z.object({
    title: z.string(),
    pubDate: z.date(),
    description: z.string(),
    author: z.string(),
    image: z.string().optional(),
    tags: z.array(z.string()).optional(),
  }),
});

export const collections = {
  'blog': blogCollection,
};

Conclusion

Astro provides an excellent developer experience while prioritizing end-user performance. It’s perfect for content-focused websites like blogs, documentation sites, and marketing sites.

Give it a try and see why developers are so excited about this new way to build for the web!