Skip to content

Repository files navigation

luiscarabalir.github.io

Sitio personal y portafolio profesional de Luis Alberto Carabalí Rivera — Software Engineer, Cali (Colombia).

En vivo: https://luiscarabalir.github.io

Stack

Monorepo con pnpm workspaces + Turborepo, aplicación en React 19 con Vite y TypeScript, estado con Zustand, y Biome para lint y formato.

Estructura

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.

Desarrollo

pnpm install
pnpm dev

Otros 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

Estado (Zustand)

  • stores/theme.ts — modo claro / oscuro / automático, persistido en localStorage. Un script en línea en index.html lee 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.

Despliegue

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.

Hoja de vida

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 cv

El 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.

Privacidad

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.

About

Distill websites, repos, videos, and articles into reusable methodologies, tech stacks, UI design insights, and product specs for AI agents and personal knowledge bases.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages