Personal engineering portfolio for carlos-olivo.dev, built with Astro and deployed as a static site on Cloudflare Workers.
The site presents senior software engineering work across backend systems, SaaS platforms, travel-tech integrations, AI-assisted workflows, and operational automation.
- Production: https://carlos-olivo.dev
- Spanish homepage: https://carlos-olivo.dev/es/
- CV: https://carlos-olivo.dev/cv/
- Spanish CV: https://carlos-olivo.dev/es/cv/
- English and Spanish homepage routes
- English and Spanish CV pages with downloadable PDF
- Case studies with external proof-of-work links
- SEO metadata, canonical URLs, and hreflang alternates
- JSON-LD structured data for the profile, website, CV, and case studies
robots.txt, sitemap, andllms.txtfor search and LLM-friendly discovery- Custom logo and favicon assets
- Cloudflare Workers static asset deployment with Wrangler
- Astro
- TypeScript
- Tailwind CSS v4
- MDX/content collections
- Cloudflare Wrangler
src/
components/ Shared UI components
content/ Case studies, experience, contact, and homepage content
layouts/ Base page layout
lib/ Navigation and structured data helpers
pages/ Static routes, including /es and /cv
sections/ Homepage sections
public/
fonts/ Local fonts
favicon.* Site icons
llms.txt LLM discovery file
robots.txt Crawler policy
pnpm install
pnpm devThe local dev server runs at http://localhost:4321.
pnpm buildThe production output is generated in dist/.
pnpm deployThis runs the Astro build and deploys the static assets using Wrangler. The Cloudflare configuration is in wrangler.jsonc.
public/robots.txtallows standard search crawlers and common AI/LLM crawlers.public/llms.txtsummarizes the site, routes, capabilities, contact links, and case studies.@astrojs/sitemapgenerates the sitemap duringpnpm build.- Structured data lives in
src/lib/structuredData.ts.
The CV is route-based instead of selector-based:
/cv/renders the English CV./es/cv/renders the Spanish CV.- Both routes include hreflang alternates and a PDF download button.