Skip to content

emawritz/emanuelcejas

Repository files navigation

emanuelcejas.vercel.app

Portfolio bilingüe (ES / EN) de Emanuel Cejas — Senior Product Engineer.

Construido con Astro 5 + Tailwind v4 + i18n nativo + JSON-LD Schema.org. Live en emanuelcejas.vercel.app.


Sobre Emanuel

Senior Product Engineer construyendo SaaS verticales y agentes IA end-to-end. Seis años codeando, autodidacta. Top 200 de ~3.000 builders en el hackathon Kaszek × Anthropic 2025.

Disponible para FT remoto USD desde Buenos Aires (UTC−3).

Otros proyectos públicos

Proyecto Stack Repo
Sesión — Co-supervisor clínico IA para psicólogos. Construido en 5 días durante el hackathon Kaszek × Anthropic. $0.14 USD por paciente/mes en producción. SvelteKit · NestJS · Postgres + pgvector · Claude Opus + Sonnet github.com/emawritz/sesion
share-sharvis / JARVIS — Multi-Agent Mission Control. Orquestación de agentes Claude Code sobre múltiples máquinas. Tauri 2 · Rust · Svelte 5 · Tailscale github.com/emawritz/share-sharvis

Productos en producción con clientes pagos (LocalCenter, balanza-agent) están en repos privados por compromiso con los clientes. Disponible para compartir snippets de arquitectura específicos si querés profundizar.

Tech stack del portfolio

  • Framework: Astro 5 (SSG)
  • Estilos: Tailwind v4 + design tokens propios
  • i18n: routing nativo Astro (ES default, EN bajo /en/)
  • SEO: JSON-LD Schema.org (Person, WebSite, FAQPage, CollectionPage), sitemap autogenerado con hreflang, OG banner programático en build
  • Performance: AVIF + WebP responsive, LCP preload, fonts subset
  • Deploy: Vercel con auto-deploy en push a main

Estructura

src/
├── components/    # secciones del portfolio (Hero, Work, Process, About, ...)
├── i18n/          # dictionary.ts con todo el contenido bilingüe
├── layouts/       # Layout.astro con SEO + JSON-LD slots
├── pages/         # / (ES), /en/ (EN), /proyectos y /en/projects (archivos)
├── styles/        # global.css con design tokens
└── ...
public/
├── og/            # OG banners generados (1200x630)
├── portrait-*.avif/.webp/.jpg   # retrato responsive
└── robots.txt + sitemap-index.xml
scripts/
└── generate-assets.mjs   # genera AVIF, WebP, OG banner via sharp

Correr local

pnpm install
pnpm dev          # localhost:4321
pnpm build        # build estático en dist/
pnpm preview      # preview del build

Generación de assets

node scripts/generate-assets.mjs
# Genera AVIF + WebP + OG banner desde public/portrait-source.jpg

Decisiones técnicas

  • Astro sobre Next.js: SSG puro, JS inicial mínimo, ideal para portfolio. No necesito server runtime — todo es estático.
  • Dictionary centralizado: todo el contenido (ES + EN) vive en src/i18n/dictionary.ts. Una sola fuente de verdad, fácil de mantener.
  • JSON-LD inyectado por página: cada página define sus schemas vía slot en Layout.astro. Sin runtime overhead.
  • Sharp en build, no a runtime: AVIF / WebP / OG se generan UNA vez pre-deploy. Vercel sirve el resultado estático.
  • i18n con routing nativo: ES default sin prefijo (/), EN bajo /en/. Sitemap genera hreflang automáticamente.

Licencia

El código es propietario. El portfolio se puede usar de referencia, pero no copiar contenido (textos, fotos, datos).

Para colaboraciones o consultas: emanuel.cejas.ar@gmail.com

About

Portfolio personal — Senior Product Engineer · Astro + Tailwind v4 · ES/EN i18n · SEO production-grade

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors