Como Configurar um Site Astro Moderno em 2025
Aprenda a criar um site de alta performance usando Astro, React, Tailwind CSS e shadcn/ui. Um guia completo para desenvolvedores.
Introdução
Neste guia, vamos explorar como criar um site moderno e de alta performance usando Astro, React, Tailwind CSS e shadcn/ui.
Esta combinação oferece o melhor dos dois mundos:
- 🚀 Performance excepcional com SSG (Static Site Generation)
- ⚛️ Componentes React quando necessário
- 🎨 Design system consistente com Tailwind
- 🧩 Componentes acessíveis do shadcn/ui
Por Que Esta Stack?
Astro
Astro é um framework moderno focado em conteúdo. Diferente de SPAs tradicionais, Astro:
- Gera HTML estático por padrão
- Carrega zero JavaScript por padrão
- Suporta “islands architecture” para interatividade seletiva
- Funciona com qualquer framework (React, Vue, Svelte, etc.)
React Islands
Com Astro Islands, você pode usar React apenas onde necessário:
<ExampleDialog client:visible />
Isso significa que o JavaScript só é carregado quando o componente está visível no viewport.
Tailwind + shadcn/ui
Tailwind CSS fornece utilitários para estilização rápida, enquanto shadcn/ui oferece componentes prontos e acessíveis:
- ✅ Design tokens via CSS custom properties
- ✅ Dark mode nativo
- ✅ Componentes totalmente customizáveis
- ✅ Acessibilidade built-in
Configuração Inicial
1. Instalar Dependências
npm install -D @astrojs/react @astrojs/tailwind tailwindcss
npm install react react-dom
2. Configurar astro.config.mjs
import { defineConfig } from 'astro/config';
import react from '@astrojs/react';
import tailwind from '@astrojs/tailwind';
export default defineConfig({
integrations: [
react(),
tailwind({ applyBaseStyles: false }),
],
});
3. Setup do Tailwind
Crie tailwind.config.cjs:
module.exports = {
content: ['./src/**/*.{astro,html,js,jsx,md,mdx,ts,tsx}'],
theme: {
extend: {
colors: {
background: 'var(--color-bg)',
foreground: 'var(--color-text)',
},
},
},
};
Design System com Tokens CSS
Crie um arquivo src/design-system/tokens.css:
:root {
--color-bg: 255 255 255;
--color-text: 15 23 42;
--color-primary: 37 99 235;
--radius-sm: 0.25rem;
--radius-md: 0.5rem;
--radius-lg: 0.75rem;
}
[data-theme="dark"] {
--color-bg: 15 23 42;
--color-text: 248 250 252;
--color-primary: 59 130 246;
}
Componentes shadcn/ui
Instale os componentes necessários:
npm install -D @radix-ui/react-dialog class-variance-authority clsx tailwind-merge
Crie o utilitário cn():
import { clsx } from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs) {
return twMerge(clsx(inputs));
}
Agora você pode criar componentes como Button.tsx, Card.tsx, Dialog.tsx, etc.
Content Collections
Configure suas coleções em src/content/config.ts:
import { defineCollection, z } from 'astro:content';
const articles = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
description: z.string(),
route: z.string(),
publishDate: z.coerce.date(),
tags: z.array(z.string()),
}),
});
export const collections = { articles };
Layouts Modulares
Crie layouts reutilizáveis:
- BaseLayout.astro - Layout base com SEO
- PostLayout.astro - Para posts de blog
- ReviewLayout.astro - Para reviews de produtos
Cada layout pode ter sua própria estrutura, mas todos compartilham o mesmo design system.
Performance & SEO
Headers de Segurança
Crie public/_headers:
/*
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Cache-Control: public, max-age=3600
Sitemap Automático
Instale @astrojs/sitemap:
import sitemap from '@astrojs/sitemap';
export default defineConfig({
site: 'https://seusite.com',
integrations: [sitemap()],
});
Schema Markup
Use JSON-LD para SEO:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Seu título aqui"
}
</script>
Deploy no Cloudflare Pages
- Conecte seu repositório
- Configure build:
- Build command:
npm run build - Output directory:
dist
- Build command:
- Deploy!
Cloudflare Pages automaticamente aplica os headers e redirects definidos em _headers e _redirects.
Conclusão
Com esta stack, você tem:
- ✅ Site ultra-rápido (SSG)
- ✅ Componentes interativos quando necessário (React Islands)
- ✅ Design system profissional (Tailwind + shadcn/ui)
- ✅ SEO otimizado
- ✅ Deploy automático
A combinação de Astro + React + Tailwind + shadcn/ui é perfeita para sites de conteúdo que precisam de performance excepcional sem sacrificar a experiência do desenvolvedor.
Próximos Passos
- Adicione analytics (Vercel Analytics, Plausible, etc.)
- Configure i18n para múltiplos idiomas
- Implemente search com Pagefind
- Adicione RSS feed para os posts
Gostou deste tutorial? Compartilhe com outros desenvolvedores que possam se beneficiar!
Perguntas Frequentes
Por que usar Astro em vez de Next.js?
Astro é ideal para sites focados em conteúdo, gerando HTML estático por padrão e carregando JavaScript apenas quando necessário, resultando em performance superior.
shadcn/ui funciona com Astro?
Sim! shadcn/ui pode ser usado com Astro através de ilhas React, permitindo hidratação seletiva dos componentes interativos.