Blog pessoal bilíngue (Português/Inglês) hospedado em silviomeireles.dev.
Construído com o tema Spaceship para Astro.
- Astro 5 - Framework de geração de sites estáticos
- Svelte 5 - Componentes UI reativos
- Tailwind CSS 4 - Framework CSS utilitário
- MDX - Markdown com componentes
- TypeScript - Tipagem estática
- Shiki - Syntax highlighting
- GitHub Pages - Hospedagem
- Blog bilíngue (PT/EN) com links entre traduções
- Dark/Light mode
- Busca rápida (Cmd+K)
- RSS Feed e Sitemap automáticos
- SEO otimizado com JSON-LD
- Imagens OG geradas automaticamente
- Table of Contents interativo
- Compartilhamento social
- Sistema de comentários (Giscus)
- Diagramas Mermaid no Markdown
# Instalar dependências
pnpm install
# Iniciar servidor de desenvolvimento (http://localhost:4321)
pnpm dev
# Gerar build de produção
pnpm build
# Pré-visualizar build de produção
pnpm preview# Iniciar com Docker Compose (http://localhost:4321)
docker compose up
# Ou construir e executar manualmente
docker build -t blog .
docker run -p 4321:4321 blog├── .github/workflows/ # GitHub Actions (deploy automático)
├── site/ # Dados do usuário (separado do engine)
│ ├── assets/ # Assets estáticos (favicon, fotos, CNAME)
│ ├── content/
│ │ ├── about/ # Página Sobre
│ │ ├── posts/ # Blog posts (PT e EN)
│ │ ├── projects/ # Projetos
│ │ └── appearances/ # Palestras e aparições
│ ├── config.ts # Configuração do site
│ ├── hero.md # Texto do hero da homepage
│ └── cta.md # Call-to-action dos posts
├── src/ # Core engine (Spaceship)
│ ├── components/ # Componentes Astro e Svelte
│ ├── layouts/ # Layouts
│ ├── lib/ # Utilitários e helpers
│ ├── pages/ # Páginas e rotas
│ └── styles/ # Estilos globais
├── astro.config.mjs # Configuração do Astro
├── Dockerfile # Container para desenvolvimento
├── docker-compose.yml # Orquestração Docker
└── package.json # Dependências e scripts
- Crie um arquivo
.mdemsite/content/posts/ - Adicione o frontmatter:
---
title: 'Título do Post'
description: 'Breve descrição do post'
pubDate: 2026-01-01
tags: ['Tag1', 'Tag2']
lang: 'pt'
slug: 'titulo-do-post-pt'
translatedPosts:
en: 'post-title-en'
---
Conteúdo do post em Markdown...- Para posts bilíngues, crie outro arquivo com o slug da tradução e adicione
translatedPostsreferenciando o par.
O deploy é automático via GitHub Actions. Ao fazer push na branch master, o workflow:
- Instala as dependências com pnpm
- Executa o build do Astro
- Publica no GitHub Pages
O site é servido em silviomeireles.dev via domínio customizado (CNAME).
MIT