Este es el repositorio del proyecto Compara Carreras, desarrollado por IMCO. Este proyecto está construido con Next.js y utiliza GitHub Pages para el despliegue, con soporte de GitHub Actions para la automatización del proceso.
Asegúrate de tener instalado:
- Node.js (versión recomendada: 18.x o superior)
- npm
- Acceso al repositorio en GitHub
-
Clona el repositorio:
git clone https://github.com/IMCO/compara-carreras.git cd compara-carreras -
Instala las dependencias:
npm install
Para correr el proyecto en un entorno local, ejecuta:
npm run devEsto levantará un servidor local en http://localhost:3000.
Para que la integración con Google Sheets funcione localmente, crea un archivo .env.local en la raíz con:
GOOGLE_SHEET_ID=tu_id_de_hoja
GOOGLE_SERVICE_ACCOUNT_EMAIL=tu_email_de_servicio
GOOGLE_PRIVATE_KEY="tu_clave_privada"
NEXT_PUBLIC_API_URL=http://localhost:3000Para realizar actualizaciones al sistema, sigue estos pasos:
-
Crea una rama nueva basada en
main:git checkout -b feature/nueva-funcionalidad
-
Realiza los cambios necesarios en el código y prueba el proyecto localmente.
-
Confirma y sube los cambios:
git add . git commit -m "Añadida nueva funcionalidad" git push origin feature/nueva-funcionalidad
-
Crea un Pull Request (PR) en GitHub desde la rama creada hacia
mainy espera la revisión. -
Una vez aprobado el PR, haz merge a
main.
El archivo src/parametros_generales.json concentra las cifras que deben actualizarse en cada edición anual (cada llave documenta dónde se muestra y su formato):
| Parámetro | Qué es | Dónde se muestra |
|---|---|---|
anio |
Año de la edición vigente | Pie de página: "© {anio} ComparaCarreras…" y meta de copyright |
salario_promedio_poblacion_ocupada |
Salario mensual promedio de la población ocupada en México | Sección "¿Cuánto ganan?" de cada carrera: "Salario promedio mensual de la población ocupada en México es $…" |
roi_salario_mensual_preparatoria |
Ingreso mensual de quien solo terminó la preparatoria | Calculadora ROI: interviene en el cálculo (no se despliega) |
roi_rendimiento_cetes |
Rendimiento anual de referencia de los Cetes | Calculadora ROI: tarjeta "Cetes" |
roi_rendimiento_oro |
Rendimiento anual promedio del oro (última década) | Calculadora ROI: tarjeta "Oro" |
roi_rendimiento_sp500 |
Rendimiento anual promedio del S&P 500 (última década) | Calculadora ROI: tarjeta "S&P 500" |
roi_fecha_referencia |
Fecha de corte de los rendimientos de referencia | Calculadora ROI: nota "*Referencia a …" |
Basta editar el valor en el JSON: los componentes lo leen directamente (se muestra redondeado a pesos con separador de miles).
Si necesitas convertir archivos CSV a JSON para el proyecto, puedes utilizar la siguiente herramienta en línea:
El proyecto utiliza una arquitectura híbrida para soportar funcionalidades de servidor (como la integración con Google Sheets) manteniendo el frontend estático en GitHub Pages.
- Frontend (GitHub Pages): Alojamiento estático. Se construye con
output: 'export'. - Backend (Vercel): Alojamiento de servidor (Node.js). Provee la API (
/api/roi) para manejar peticiones seguras.
El proyecto debe desplegarse en Vercel para habilitar la API.
- Variables de Entorno requeridas en Vercel:
GOOGLE_SHEET_ID: ID de la hoja de cálculo.GOOGLE_SERVICE_ACCOUNT_EMAIL: Email de la cuenta de servicio.GOOGLE_PRIVATE_KEY: Llave privada de la cuenta de servicio.
El flujo de trabajo de GitHub Actions (.github/workflows/nextjs.yml) se encarga de construir y desplegar el sitio estático.
- Secretos de Repositorio requeridos en GitHub:
NEXT_PUBLIC_API_URL: URL del proyecto desplegado en Vercel (ej.https://tu-proyecto.vercel.app). Nota: Sin la barra/al final.
- Al hacer push a
main, GitHub Actions inicia el proceso. - Elimina la carpeta
src/app/apipara evitar conflictos con la exportación estática. - Construye el proyecto inyectando
NEXT_PUBLIC_API_URL. - Despliega los archivos estáticos a GitHub Pages.
El sitio estará disponible en:
https://comparacarreras.imco.org.mx/
Si deseas contribuir, por favor abre un Issue o un Pull Request siguiendo las mejores prácticas de desarrollo.
El proyecto incluye una sección de rankings "Las 10 más" con distintos indicadores por carrera.
- Crea el archivo JSON con los datos en
src/components/las-10-mas/top/. - Agrega la tarjeta en
src/app/las-10-mas/data.constans.ts. - Registra la metadata en
src/app/las-10-mas/[slug]/data.constans.ts.
Para más detalles, consulta la guía completa en COMO_AGREGAR_TOPS.md.
El proyecto incluye una sección automatizada de "Investigaciones" que muestra las últimas publicaciones de Compara Carreras.
El proceso de agregar nuevas ediciones está completamente automatizado. El sistema extrae el título, descripción e imagen directamente de la URL proporcionada.
-
Edita el archivo
src/app/investigaciones/data.constants.ts. -
Agrega la nueva configuración:
{ id: "cc-2026", year: 2026, url: "https://imco.org.mx/nueva-investigacion/" }
Para más detalles, consulta la guía completa en COMO_AGREGAR_INVESTIGACIONES.md.
El proyecto utiliza Google Analytics 4 para el seguimiento de usuarios.
- Eventos personalizados: Se rastrean cálculos de ROI (
roi_calculation). - Dimensiones personalizadas: Nivel educativo, carrera, tipo de universidad, etc.
- Métricas personalizadas: Costo total, meses de recuperación, RSI, etc.
Consulta ANALYTICS_DATA_COLLECTION.md para ver la especificación completa de eventos.
Para más información, contacta con el equipo de IMCO a través de su página oficial: https://imco.org.mx.