MarkdownCV es un workspace para construir, editar y exportar un CV profesional desde Markdown, con una interfaz web en Streamlit y una salida pensada para PDF ATS-friendly.
Para que el proyecto funcione correctamente, necesitas cumplir estos puntos:
- Python 3.10 o superior.
- Un instalador real de Python en Windows, o el lanzador
py -3. wkhtmltopdfinstalado en el equipo.- Un entorno donde PowerShell pueda ejecutar scripts locales.
El script run_app.ps1 resuelve gran parte de esto por ti:
- Crea
.venvsi no existe. - Actualiza
pipdentro del entorno virtual. - Verifica si faltan dependencias en
requirements.txt. - Busca
wkhtmltopdfen este orden: variable de entornoWKHTMLTOPDF_PATH, ruta por defecto de Windows, y finalmentePATH. - Si lo encuentra, registra
WKHTMLTOPDF_PATHcomo variable de usuario y luego levanta Streamlit.
Si wkhtmltopdf no esta en el PATH, define la variable antes de arrancar la app:
$env:WKHTMLTOPDF_PATH = "C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"Si necesitas ejecutar el script con instalacion forzada o sin reinstalar dependencias, run_app.ps1 acepta estos switches:
.\run_app.ps1 -ForceInstall
.\run_app.ps1 -SkipInstallLa forma mas simple en Windows es usar run_app.bat. Ese lanzador evita pelearte con la politica de ejecucion de PowerShell y delega todo en run_app.ps1.
run_app.batDetras de escena, el .bat ejecuta el script de PowerShell con ExecutionPolicy Bypass solo para esa sesion, por lo que el flujo queda limpio y repetible sin tocar la configuracion global del sistema.
Si prefieres manejarlo manualmente, el flujo tradicional sigue siendo totalmente valido.
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
streamlit run app.pySi PowerShell bloquea la activacion del entorno virtual, puedes usar una sesion puntual con bypass:
powershell -NoProfile -ExecutionPolicy Bypass -File .\run_app.ps1En cualquier modo, la app suele quedar disponible en:
http://localhost:8501
La interfaz esta organizada como un flujo guiado por paginas en la barra lateral. La idea es que puedas cargar un CV en Markdown, ajustarlo visualmente, completar datos de contacto y generar el PDF final sin salir del navegador.
En esta primera pantalla cargas tu archivo .md.
- Al subir un Markdown, la app guarda una version de trabajo en
cvs/con el mismo nombre base. - Si el archivo cambia, la sesion limpia el estado de generacion previa para evitar exportar una version desactualizada.
- La navegacion a la siguiente etapa queda habilitada solo cuando ya hay contenido cargado.
Aqui editas el contenido con un editor estilo IDE, usando ACE integrado en Streamlit.
- El editor trabaja sobre el Markdown cargado inicialmente.
- El estado de cambios se marca como
Unsaved changesmientras el contenido editado difiere del contenido base. - Al guardar, el Markdown se persiste en
cvs/<nombre>.md. - El guardado mantiene saltos de linea estables en Windows para evitar problemas de EOL duplicados.
Esta seccion concentra los datos de identidad y enlaces sociales que alimentan la plantilla final.
- Puedes editar telefono y email.
- Puedes ajustar GitHub y LinkedIn, tanto la URL como el texto visible.
- La app intenta inferir el username desde la URL si el campo de texto esta vacio.
- El titulo principal del CV se selecciona desde una lista configurable.
- Tambien puedes administrar titulos desde la propia UI: agregar, editar y eliminar opciones.
Esta es la etapa final antes de exportar.
- La app renderiza una vista previa HTML embebida.
- Al generar el PDF, el documento anterior se archiva en
archive/con sufijo incremental. - El PDF nuevo se guarda junto al Markdown en
cvs/<nombre>.pdf. - Si el archivo existe y se genero en la sesion actual, puedes abrirlo desde la propia app.
- Editor Markdown web con experiencia de escritura tipo editor de codigo.
- Vista previa HTML en tiempo real para revisar el resultado final antes de exportar.
- Generacion de PDF con
pdfkitywkhtmltopdf. - Archivado automatico de PDFs previos para no perder versiones anteriores.
- Persistencia de borradores Markdown en
cvs/. - Configuracion editable de contacto, GitHub, LinkedIn y titulo profesional.
- Gestion de titulos desde la UI, sin tocar archivos a mano.
- Deteccion automatica de
wkhtmltopdfen entornos Windows.
El repositorio esta organizado para separar la interfaz, la generacion de salida y los datos editables del CV.
app.py: aplicacion principal de Streamlit. Orquesta la carga del Markdown, la edicion, la configuracion de datos y la exportacion del PDF.run_app.ps1: bootstrap moderno para Windows. Crea o reutiliza.venv, valida dependencias, resuelvewkhtmltopdfy arranca la app.run_app.bat: lanzador simple para usuarios que prefieren doble clic o comandos basicos en Windows.generate_pdf.py: utilidad CLI para convertir un Markdown a PDF fuera de la interfaz web.data.yaml: datos personales, contacto, enlaces y titulo activo del CV.title_options.yaml: catalogo de titulos disponibles para el selector de la app.template.html: plantilla HTML que define la presentacion final del CV exportado.cvs/: espacio de trabajo para Markdown editado y PDFs generados.archive/: historico de PDFs previos, protegido para conservar versiones anteriores.requirements.txt: dependencias Python necesarias para la app y la exportacion.
- Abre
run_app.bato ejecutarun_app.ps1. - Sube tu CV en Markdown.
- Ajusta el contenido en el editor.
- Completa contacto, enlaces y titulo profesional.
- Revisa la vista previa HTML.
- Genera el PDF final y revisa la version archivada si ya existia una anterior.
- La app intenta resolver
wkhtmltopdfen este orden:WKHTMLTOPDF_PATH, ruta por defecto de Windows yPATH. - En Windows, el alias de Microsoft Store para
pythonno es suficiente para este proyecto; conviene usar una instalacion real opy -3. - Si abres el proyecto desde cero en otra maquina, el primer arranque puede tardar un poco mientras se crea el entorno virtual y se instalan dependencias.