Portfólio profissional, blog técnico e vitrine de projetos de Isaac D'Césares, pesquisador, educador e coordenador de tecnologia educacional. O site reúne produção autoral sobre IA, educação, segurança digital e desenvolvimento, com foco em performance, acessibilidade e uma identidade visual própria baseada no design system Membrane Palette.
O projeto está atualmente em Astro 6 com output: 'server', deploy na Vercel e páginas públicas prerenderizadas no build. A navegação é MPA, com prefetch nativo do Astro e superfícies interativas pontuais para filtros, busca, toggle de visualização, troca de tema e cards com microinterações.
Além do conteúdo editorial, o repositório também documenta:
- um fluxo Docker completo para desenvolvimento machine-agnostic;
- um design system próprio em
design-system/; - instruções para agentes e copilots alinhadas com a arquitetura atual;
- pipelines de validação com
astro check, build e auditoria de dependências.
No snapshot atual do projeto, o site expõe:
- página inicial em
/; - páginas estáticas em
/about,/blog,/work,/deve/deals; - rotas dinâmicas em
/blog/[...slug]e/work/[...slug]; - feed RSS em
/rss.xml; - índice de busca em
/search-data.json.
Conteúdo incluído hoje no repositório:
- 12 posts em
src/content/blog/; - 18 entries em
src/content/work/; - 2 projetos de desenvolvimento em
src/data/dev-projects.ts.
Principais entregas já implementadas:
- listagens de blog e work com filtros por tags, busca textual, ordenação e toggle de visualização;
- página
/devdedicada a projetos de software e design system; - Membrane Palette aplicado em toda a interface;
- animações CSS com scroll reveal e respeito a
prefers-reduced-motion; - SEO com
astro-seo, sitemap, JSON-LD e RSS; - analytics e speed insights via Vercel;
- fallback estático para busca em
public/search-fallback.js.
- Astro 6.1
- React 19
- TypeScript strict
- Tailwind CSS v4
- HeroUI
- Astro Content Collections com schema Zod
- MDX para conteúdo enriquecido
- rehype-pretty-code + botão de cópia
- remark-reading-time customizado em PT-BR
- Fuse.js para busca client-side
- astro-seo
- @astrojs/rss
- @astrojs/sitemap
- @astrojs/partytown
- @vercel/analytics
- @vercel/speed-insights
- Vercel adapter
- Docker / Docker Compose
- GitHub Actions
output: 'server'para preservar integrações da Vercel, image service e analytics.- Páginas e endpoints públicos usam
export const prerender = true. prefetchAll: truecomdefaultStrategy: 'viewport'.trailingSlash: 'ignore'+build.format: 'file'para URLs consistentes.
As collections blog e work vivem em src/content/ e compartilham o mesmo schema:
title: string
description: string
publishDate: Date
updatedDate: Date
tags: string[]
img: string
img_alt?: stringFormatos suportados:
.md.mdx
O endpoint src/pages/search-data.json.ts gera um JSON com dados consolidados de blog e work, incluindo:
- título;
- descrição;
- conteúdo sanitizado para indexação;
- tags;
- tipo (
blogouwork); - datas;
- URL pública.
Esse índice alimenta a experiência client-side com Fuse.js e é entregue com cache de 5 minutos, CORS aberto e fallback estático em public/search-fallback.js.
O site usa o Membrane Palette, com tokens semânticos em src/styles/design-tokens.css e documentação em:
Tipografia atual:
- Fraunces para títulos;
- Instrument Sans para interface e texto corrido;
- JetBrains Mono para código.
- meta tags e Open Graph via
astro-seo; - JSON-LD via
src/utils/seo.ts; - sitemap automático;
- RSS para o blog;
- headers de segurança e caching em
vercel.json.
Portfolio/
├── src/
│ ├── assets/ # Assets importados pelo Astro
│ ├── components/ # Componentes Astro e React reutilizáveis
│ ├── content/ # Collections blog/ e work/
│ ├── data/ # Dados tipados para superfícies como /dev
│ ├── layouts/ # Layouts base
│ ├── pages/ # Rotas do site e endpoints
│ ├── styles/ # Tokens e CSS global
│ ├── utils/ # Helpers de SEO, busca e utilidades
│ └── content.config.ts # Schema das collections
├── public/
│ ├── assets/ # Imagens estáticas otimizadas
│ ├── certificates/ # PDFs públicos
│ ├── llms.txt # Guia resumido para LLMs
│ ├── llms-full.txt # Guia estendido para LLMs
│ └── search-fallback.js # Fallback cacheado para busca
├── design-system/ # Membrane Palette
├── docker/ # Documentação e scripts Docker
├── .github/workflows/ # CI
├── astro.config.mjs
├── docker-compose.yml
├── docker-compose.prod.yml
├── Dockerfile
├── package.json
└── vercel.json
- Node.js
>=22 <25 - pnpm
>=9 <11
Instalação e uso:
pnpm install
pnpm devSite local:
pnpm dev # Desenvolvimento
pnpm build # Build de produção
pnpm preview # Preview do build
pnpm astro check # TypeScript + content collections
pnpm check # astro check + build
pnpm audit # Auditoria high/critical
pnpm audit:full # Auditoria moderate+Em máquinas Windows, pnpm build pode falhar com erro de symlink ao gerar .vercel/output. Isso acontece por restrições do sistema em torno de links simbólicos. As alternativas recomendadas são:
- habilitar Developer Mode;
- rodar o terminal como administrador;
- usar WSL;
- usar Docker;
- confiar no build Linux da Vercel em deploys via Git.
O repositório inclui ambiente Docker multi-stage para desenvolvimento e preview de produção.
.\docker.ps1 updocker compose up -dComandos úteis:
.\docker.ps1 up
.\docker.ps1 down
.\docker.ps1 logs
.\docker.ps1 check
.\docker.ps1 shell
.\docker.ps1 prodmake up
make down
make logs
make check
make shell
make prodDocumentação relacionada:
Crie um arquivo em src/content/blog/:
---
title: "Título do post"
description: "Descrição curta para SEO"
publishDate: 2026-04-02
updatedDate: 2026-04-02
tags: ["ia", "educacao", "inovacao"]
img: "/assets/blog_imgs/exemplo.webp"
img_alt: "Descrição da imagem"
---Crie um arquivo em src/content/work/:
---
title: "Título do trabalho"
description: "Resumo do projeto"
publishDate: 2026-04-02
updatedDate: 2026-04-02
tags: ["pesquisa", "ia", "educacao"]
img: "/assets/blog_imgs/exemplo.webp"
img_alt: "Descrição da imagem"
---Regras importantes:
- use caminhos absolutos em imagens, como
/assets/blog_imgs/nome.webp; - mantenha slugs em lowercase-hyphenated;
- valide com
pnpm astro checkantes de abrir PR; - prefira WebP/AVIF e mantenha assets públicos abaixo de 5 MB.
O workflow em .github/workflows/ci.yml executa:
pnpm install --frozen-lockfilepnpm run auditcomcontinue-on-errorpnpm astro checkpnpm build
O deploy usa:
pnpm installpnpm build- headers de segurança globais;
- cache dedicado para
/search-data.json,/search-fallback.js,/_astro/*,/rss.xmle/favicon.svg.
AGENTS.md: instruções para agentes e automaçãoCLAUDE.md: guia operacional para Claude Code.github/copilot-instructions.md: contexto para GitHub Copilotdesign-system/DESIGN-SYSTEM.md: tokens, princípios e semântica visualdocker/INDEX.md: hub da documentação Docker
O código está sob a licença MIT. Consulte LICENSE.
- Website: dcesares.dev
- LinkedIn: Isaac D'Césares
- GitHub: @idcesares
- RSS: dcesares.dev/rss.xml
Última atualização: 2 de abril de 2026