Mi curriculum profesional publicado como sitio estatico, generado desde Reactive Resume y JSON Resume con GitHub Actions.
Repositorio que gestiona mi CV profesional con un pipeline automatizado:
- Reactive Resume (rxresu.me) como editor principal del CV
- Backup automatico del JSON completo via API
- Generacion de HTML estatico desde los backups y desde
public/resume.json - Publicacion en GitHub Pages
Caracteristicas:
- Backup de resumes desde Reactive Resume API
- Generacion de HTML estatico con diseno responsivo
- Export de PDF y screenshots via API
- Pagina principal desde JSON Resume (
public/resume.json) - Paginas adicionales por cada resume de rxresume
- Sincronizacion de backups locales hacia resumes existentes en Reactive Resume
- Sitemap automatico
- Umami Analytics integrado
- SEO (Open Graph, Twitter Cards)
- Workflow manual con GitHub Actions
- Pagina principal: https://resume.rafnixg.dev
- Resume (ES): https://resume.rafnixg.dev/resume/index-rafnix-guzman-python.html
- Resume (EN): https://resume.rafnixg.dev/resume/index-rafnix-guzman-python-en.html
├── backups/ # Backups JSON de rxresume (API)
│ ├── {slug}.json # Resume en español
│ └── {slug}-en.json # Resume en inglés
├── public/ # Sitio estatico (GitHub Pages root)
│ ├── index.html # Pagina principal (desde public/resume.json)
│ ├── resume.json # JSON Resume estandar
│ ├── sitemap.xml # Sitemap generado automaticamente
│ ├── assets/ # Recursos estaticos
│ │ ├── {slug}.pdf # PDF exportado desde rxresume
│ │ ├── {slug}.png # Screenshot desde rxresume
│ │ ├── banner_web.png
│ │ └── logo.png
│ └── resume/ # Paginas HTML por resume
│ └── index-{slug}.html # HTML generado desde backup
├── scripts/
│ ├── rxresume.py # Wrapper class para rxresume API
│ ├── rxresume_backup.py # Backup de resumes desde API
│ ├── rxresume_export.py # Export: HTML, PDF, sitemap, analytics
│ ├── rxresume_import.py # Importa o sincroniza backup JSON a rxresume segun el slug
│ ├── rxresume_sync.py # Sincroniza un backup JSON con un resume existente
│ ├── export_config.py # Configuracion compartida del export
│ ├── export_rendering.py # Render HTML para JSON Resume y Reactive Resume
│ ├── export_sitemap.py # Generacion de sitemap.xml
│ └── add_custom_tags.py # Inyeccion de analytics y meta tags
└── .github/workflows/
└── rxresume-sync.yml # Workflow: backup -> export -> commit
| Script | Descripcion |
|---|---|
rxresume.py |
Clase RxResumeClient que encapsula las llamadas a la API de rxresume |
rxresume_backup.py |
Lista y descarga todos los resumes como JSON en backups/ |
rxresume_export.py |
Genera HTML, descarga PDF/PNG, inyecta analytics, crea sitemap |
rxresume_import.py |
Importa un backup JSON y, si el slug ya existe, sincroniza el resume existente |
rxresume_sync.py |
Sincroniza explicitamente un backup JSON con un resume existente |
export_config.py |
Centraliza rutas y constantes del pipeline de export |
export_rendering.py |
Contiene el render HTML de secciones para JSON Resume y Reactive Resume |
export_sitemap.py |
Genera el sitemap a partir de los resumes exportados |
add_custom_tags.py |
Clase CustomTagAdder para inyectar scripts y meta tags en HTML |
public/resume.json es la unica fuente JSON Resume del repositorio.
Los archivos en backups/ son la fuente de verdad para los resumes de Reactive Resume (rafnix-guzman-python y rafnix-guzman-python-en).
- Python 3.10+
pip install requests- API key de rxresu.me (Settings -> API Keys)
# 1. Backup de todos los resumes
RXRESUME_API_KEY=tu-api-key python scripts/rxresume_backup.py
# 2. Export HTML + PDF + sitemap + analytics
RXRESUME_API_KEY=tu-api-key python scripts/rxresume_export.py
# Sin API key solo genera HTML desde los backups existentes
python scripts/rxresume_export.py
# 3. Sincronizar un backup con Reactive Resume
RXRESUME_API_KEY=tu-api-key python scripts/rxresume_sync.py rafnix-guzman-python-en.json
# 4. Importar un backup JSON; si el slug ya existe, hace sync automaticamente
RXRESUME_API_KEY=tu-api-key python scripts/rxresume_import.py rafnix-guzman-python-en.json- Edita
public/resume.jsonsi quieres cambiar la pagina principal basada en JSON Resume. - Edita
backups/rafnix-guzman-python.jsonobackups/rafnix-guzman-python-en.jsonsi quieres cambiar los resumes de Reactive Resume. - Ejecuta
python scripts/rxresume_import.py <archivo>.jsonopython scripts/rxresume_sync.py <archivo>.jsonpara subir esos cambios. - Ejecuta
python scripts/rxresume_export.pypara regenerarpublic/.
El despliegue se ejecuta manualmente desde GitHub Actions:
- Ejecutar workflow desde Actions -> "Sync resumes from Reactive Resume" -> Run workflow
- Backup: Descarga los resumes desde la API de rxresume
- Export: Genera HTML, descarga PDF/PNG, inyecta analytics, crea sitemap
- Commit & Push: Sube los cambios a
backups/ypublic/ - GitHub Pages: Sirve
public/como sitio estatico
- Agrega el secret
RXRESUME_API_KEY:- Settings -> Secrets and variables -> Actions -> New repository secret
- Configura GitHub Pages:
- Settings -> Pages -> Source: Deploy from branch ->
main/public
- Settings -> Pages -> Source: Deploy from branch ->
Este proyecto esta bajo la Licencia MIT - ver el archivo LICENSE para mas detalles.
Desarrollado por Rafnix Gabriel Guzman Garcia | Python Backend | AI Engineer | Odoo Developer