Pedro Rodriguez's academic site (https://www.pedro.ai), built with Astro + React + Tailwind CSS v4, matching the photography site.
npm install
npm run dev # local dev server
npm run build # build static site to dist/
npm run preview # preview the built sitesrc/pages/— routes (file-based). Blog posts are generated at/blog/YYYY/MM/DD/slug/bysrc/pages/blog/[year]/[month]/[day]/[slug].astrofrom each post's frontmatterdate+slug. Content pages render at/{slug}/viasrc/pages/[slug].astro.src/content/blog/— blog posts (Markdown; code via Shiki, math via KaTeX).src/content/pages/— content pages (about.mdhasslug: home→/).src/data/publications.ts— generated frompublications.bibbyscripts/generate_publications.py.src/layouts/,src/components/,src/config/nav.ts— layout, navbar, theme toggle, etc.public/— static assets served verbatim (/static/**,/cv.pdf,favicon.ico,_redirects,CNAME).
URLs intentionally match the previous Pelican site for SEO; trailingSlash and
build.format: 'directory' in astro.config.mjs preserve trailing-slash
directory URLs. Old-domain 301 redirects live in public/_redirects.
Netlify (netlify.toml): npm run build → publish dist/.
python3 scripts/generate_publications.py # publications.bib -> src/data/publications.ts