Sitio personal y portafolio profesional de Luis Alberto Carabalí Rivera — Software Engineer, Cali (Colombia).
En vivo: https://luiscarabalir.github.io
Monorepo con pnpm workspaces + Turborepo, aplicación en React 19 con Vite y TypeScript, estado con Zustand, y Biome para lint y formato.
apps/web/ aplicación React (Vite)
public/assets/ portada, foto y certificados (PDF + miniaturas)
public/cv/ hojas de vida en PDF
src/components/ componentes de cada sección
src/stores/ stores de Zustand (tema, UI)
src/hooks.ts tema aplicado, scroll spy, cierre de overlays
src/styles/global.css hoja de estilos única
packages/profile/ contenido tipado: experiencia, habilidades, credenciales…
tools/cv/make_cv.py generador de las hojas de vida en PDF
.github/workflows/ build y despliegue a GitHub Pages
packages/profile es la única fuente de verdad del contenido: para actualizar la
experiencia, las habilidades o los certificados se edita ese paquete, no los componentes.
pnpm install
pnpm devOtros comandos:
| Comando | Qué hace |
|---|---|
pnpm build |
Construye el sitio en apps/web/dist |
pnpm preview |
Sirve la build de producción |
pnpm lint |
Revisa lint y formato con Biome |
pnpm lint:fix |
Corrige lo que Biome pueda arreglar solo |
pnpm check-types |
Verifica los tipos con TypeScript |
pnpm cv |
Regenera las hojas de vida en PDF |
stores/theme.ts— modo claro / oscuro / automático, persistido enlocalStorage. Un script en línea enindex.htmllee esa misma clave antes del primer pintado, así que una preferencia oscura nunca parpadea en claro.stores/ui.ts— sección activa (la resalta la navegación) y el certificado abierto en el lightbox.
Cada push a main dispara .github/workflows/deploy.yml, que corre lint, tipos y build,
y publica apps/web/dist en GitHub Pages. En Pages la fuente debe estar configurada como
GitHub Actions, no como rama.
Se generan con ReportLab en formato de una sola columna, sin tablas ni imágenes, para que los sistemas de selección (ATS) extraigan el texto en orden de lectura.
pip install reportlab && pnpm cvEl primer destino recibe las versiones públicas (sin teléfono) y el segundo las versiones
con teléfono, pensadas para postulaciones directas. tools/cv/con-telefono/ está en
.gitignore a propósito: esas copias no deben publicarse.
Quedan deliberadamente fuera del sitio público el número de cédula, la dirección de residencia, el teléfono, el certificado de notas y los datos de contacto de jefes y referencias. Los certificados del Instituto Centro de Sistemas del Valle, el acta de grado y la tarjeta profesional tampoco se publican como imagen porque el escaneo incluye el número de documento; en el sitio aparecen listados como texto.