EMPLEAME es una plataforma web de empleos en Bolivia que conecta buscadores con empleadores de manera eficiente y moderna. La plataforma permite a los buscadores crear perfiles profesionales detallados con experiencia laboral, educación y habilidades, buscar ofertas de trabajo con filtros avanzados, postularse a posiciones y recibir notificaciones en tiempo real sobre el estado de sus aplicaciones. Por otro lado, los empleadores pueden publicar ofertas de trabajo, revisar candidatos, gestionar múltiples publicaciones, acceder a suscripciones premium para destacar sus ofertas y acceder a funcionalidades avanzadas, entre otros aspectos.

Listado de ofertas de trabajo con opciones en la barra lateral
Listado de ofertas de trabajo con opciones en la barra lateral

Problema que resuelve

El mercado laboral tradicional tiene limitaciones a la hora de manejar datos vitales para la búsqueda de empleo, la eficiencia es baja y la comunicación entre empleadores y buscadores es deficiente. EMPLEAME busca modernizar este proceso ofreciendo una plataforma digital que facilite la conexión entre ambas partes, mejorando la experiencia del usuario y aumentando las oportunidades de empleo.

Vista de 'Mis empleos', donde se muestra el perfil de una empresa
Vista de 'Mis empleos', donde se muestra el perfil de una empresa

EMPLEAME backend

EMPLEAME Backend es la aplicación del lado del servidor que maneja la lógica de negocio, la gestión de datos y las integraciones con servicios externos. Es una API enfocada en servir datos de manera eficiente mediante GraphQL y gestionar eventos en tiempo real vía WebSockets, soportando roles complejos como administradores (ADMIN, SUPERUSER) y usuarios regulares como lo son empleadores (EMPLOYER) y buscadores de empleo (SEEKER).

Stack tecnológico

  • Backend
    • stack/typescript icon TypeScript: Lenguaje principal del proyecto
    • stack/nodejs icon Node.js: Entorno de ejecución del servidor
    • stack/nest icon NestJS: Framework para estructurar el servidor
    • stack/graphql icon GraphQL: Lenguaje de consulta para APIs
  • Base de datos
    • stack/postgres icon PostgreSQL: Base de datos relacional para almacenamiento de datos
    • stack/typeorm icon TypeORM: ORM para interactuar con la base de datos
  • Comunicación en tiempo real
    • stack/socketio icon Socket.IO (WebSockets): Comunicación en tiempo real entre cliente y servidor
  • Autenticación y seguridad
    • stack/jwt icon JWT: JSON Web Tokens para autenticación segura
    • 🔑 bcrypt: Librería para el hash de contraseñas
    • stack/passport icon Passport.js: Middleware de autenticación
  • Servicios externos e integraciones
    • stack/cloudinary icon Cloudinary: Servicio en la nube para gestión y optimización de imágenes
    • stack/stripe icon Stripe: Plataforma de pagos en línea
  • Validación
    • stack/typestack icon class-validator: Validación de datos entrantes
    • stack/typestack icon class-transformer: Transformación de objetos
    • 🥳 Joi: Validación de esquemas
  • Utilidades
    • 🕰️ Luxon: Manejo de fechas y horas
    • stack/sharp_js icon Sharp: Librería para procesamiento de imágenes en el servidor
  • Herramientas de desarrollo
    • 🐶 Husky: Ganchos de Git para automatizar tareas de desarrollo
    • stack/commitlint icon Commitlint: Linting de mensajes de commit para mantener un historial limpio

Funcionalidades

  • Registro y autenticación diferenciada: Permite a los usuarios registrarse y usar la aplicación como EMPLOYER o SEEKER, cada uno con flujos de registro personalizados utilizando a los guards para proteger rutas y funcionalidades según el rol.
  • Gestión de ofertas de trabajo (empleadores): Los empleadores pueden crear, editar y eliminar ofertas de trabajo, así como destacarlas mediante una suscripción premium.
  • Gestión de ofertas de trabajo (buscadores): Los buscadores pueden buscar ofertas de trabajo utilizando filtros avanzados, postularse a las ofertas y gestionar sus postulaciones, además de marcar favoritos para revisarlos más tarde y visualizar las publicaciones destacadas primero.
  • Notificaciones en tiempo real: Los usuarios reciben actualizaciones instantáneas sobre el estado de sus aplicaciones y otras actividades relevantes.
  • Ecosistema de pagos: Integración con Stripe para manejar suscripciones premium y pagos de manera segura y eficiente.
  • Nivel administrador: Los administradores pueden gestionar usuarios, ofertas de trabajo y acceder a estadísticas detalladas sobre la plataforma.
  • Autenticación multicanal: Soporte para autenticación tradicional con email y contraseña, así como autenticación social mediante Google y Facebook.
  • Sistema de confirmación y verificación: Implementación de flujos de confirmación de email para nuevos registros como también para recuperación de contraseña. Los tokens para las confirmaciones tienen fecha de expiración y son de un solo uso.
  • Gestión de imágenes: Integración con Cloudinary para el almacenamiento y procesamiento de imágenes, permitiendo a los usuarios subir fotos de perfil y a los empleadores subir imágenes relacionadas con sus ofertas de trabajo.
Formulario de registro con inicio mediante Google y campos personales
Formulario de registro con inicio mediante Google y campos personales

Módulos

  • User/Auth/Confirmation: Módulos para gestionar el ciclo de vida del usuario.
  • Seeker: Gestión del perfil del candidato, información de experiencia laboral, educación, habilidades, postulaciones, favoritos, etc.
  • Employer: Gestión de empleadores y empresas, gestión de ofertas de trabajo, información corporativa, relación con publicaciones, etc.
  • Post: Gestión de las publicaciones de empleo, con toda su información relevante, filtros, etc.
  • Subscription/Transaction/Stripe: Módulos para las suscripciones premium para empleadores y monetización de la plataforma.
  • Notifications: Módulo para gestionar las notificaciones en tiempo real a través de WebSockets, incluyendo la creación, envío y gestión de notificaciones para los usuarios.
  • Upload: Servicio agnóstico para la gestión de archivos.
  • Interaction: Gestión de interacciones entre usuarios con publicaciones, incluyendo postulaciones, favoritos y visualizaciones.
  • Featured: Maneja la lógica de publicaciones destacadas como la duración, costo, expiración y renovación.
  • Admin: Funcionalidades exclusivas para administradores del sistema incluyendo dashboards, estadísticas y herramientas de gestión.
Vista de publicaciones
Vista de publicaciones

Modelo de datos

El modelo de datos de EMPLEAME está diseñado para soportar la complejidad de las relaciones entre usuarios, ofertas de trabajo, postulaciones y otros aspectos clave de la plataforma.

Modelo de datos de EMPLEAME
Modelo de datos de EMPLEAME

Puedes ver también el modelo de datos completo en diagrams.net: Modelo de datos de EMPLEAME.

Prerrequisitos

  • NodeJS, igual o superior a la versión 18.x
  • npm
  • Docker (opcional, para la base de datos PostgreSQL)

Instalación y ejecución (backend)

  1. Clona el repositorio:

    git clone https://github.com/igidio/emplea.me-backend-services.git
    cd emplea.me-backend-services
  2. Instala las dependencias:

    npm install
  3. Configuración del entorno: Renombra el archivo de entorno de ejemplo y configura las variables:

    cp .template.env .env
  4. Configuración de la base de datos: Si tienes Docker instalado, configura el archivo 📄docker-compose.yaml con los datos de tu instancia de PostgreSQL. Luego, ejecuta el siguiente comando para iniciar la base de datos PostgreSQL:

    docker-compose up -d
  5. Ejecuta migraciones y seeds: Asegúrate de que la base de datos esté corriendo y ejecuta las migraciones y seeds para preparar el esquema:

    # Ejecutar migraciones de TypeORM
    npm run typeorm:generate
    # Ejecutar seeders para poblar datos iniciales
    npm run seed:fresh
  6. Inicia la aplicación:

    npm run start:dev

Si todo está configurado correctamente, la aplicación debería estar corriendo en 🔗http://localhost:3000 y el playground de GraphQL en 🔗http://localhost:3000/graphql.

Extra: si quieres usar husky para hooks de git y commit lints, ejecuta:

npx husky init

EMPLEAME frontend

EMPLEAME Frontend es la aplicación del lado del cliente que proporciona la interfaz de usuario para la plataforma de búsqueda de empleo EMPLEAME. Construida con Nuxt 3 y Vue 3, esta aplicación ofrece una experiencia de usuario fluida y responsiva, permitiendo a los usuarios interactuar con las funcionalidades del backend de manera eficiente.

Vista de publicación de empleador premium con detalles de la oferta de trabajo
Vista de publicación de empleador premium con detalles de la oferta de trabajo

Stack tecnológico

  • Frontend
    • stack/typescript icon TypeScript: Lenguaje principal del proyecto
    • stack/nuxt icon Nuxt 3: Framework de interfaz de usuario
    • stack/vue icon Vue 3: Framework de interfaz de usuario
    • stack/vite icon Vite: Herramienta de construcción rápida
    • stack/pinia icon Pinia: Gestión de estado para el manejo global de datos
  • UI
    • stack/tailwind icon Tailwind 3: Framework de estilos
    • stack/nuxt icon Nuxt UI: Componentes preconstruidos y reutilizables
    • stack/iconify icon Iconify: Iconos
  • Obtención de datos
    • stack/apollo icon Apollo Client: Cliente GraphQL para la obtención de datos
  • Comunicación en tiempo real
    • stack/socketio icon Socket.IO (WebSockets): Comunicación en tiempo real entre cliente y servidor
  • Validación
    • stack/yup icon Yup: Validación de esquemas para formularios
  • Utilidades
    • stack/unovis icon Unovis: Librería de visualización de datos para gráficos y diagramas
    • 📅 Date-fns: Librería para el manejo de fechas
    • 📆 Vue Datepicker: Componente de calendario para selección de fechas
    • ✂️ Vue Advanced Cropper: Componente para recorte avanzado de imágenes
    • 🔑 Crypto-js: Librería para encriptación y hashing de datos
  • Herramientas de desarrollo
    • 🐶 Husky: Ganchos de Git para automatizar tareas de desarrollo
    • stack/commitlint icon Commitlint: Linting de mensajes de commit para mantener un historial limpio
Formulario de pago con campos de tarjeta y resumen del plan
Formulario de pago con campos de tarjeta y resumen del plan

Funcionalidades

  • Autenticación multicanal: La aplicación implementa un sistema completo de autenticación con múltiples opciones de inicio de sesión, incluyendo autenticación tradicional con email y contraseña, así como autenticación social mediante Google y Facebook. Los tokens de autenticación se almacenan de manera segura en las cookies con opciones de seguridad adecuadas para proteger la información del usuario.

  • Sistema de registro progresivo: El proceso de registro se divide en pasos para mejorar la experiencia del usuario. Estos pasos pueden ser distintos de acuerdo al rol seleccionado (administrador, empleador o buscador de empleo), permitiendo una personalización del proceso de registro según las necesidades de cada tipo de usuario.

  • Vista detallada de publicaciones: Las publicaciones de empleo muestran información fundamental como el título, descripción, requisitos, beneficios, ubicación y tipo de empleo pero la información de contacto solo se muestra a los usuarios autenticados que hayan postulado a la oferta o que sean empleadores, esto con el fin de mostrar las interacciones de un post, y si el empleador cuenta con una suscripción premium, también conocer los datos del postulante.

  • Dashboard de administrador: Los administradores tienen acceso a un panel de control donde pueden gestionar usuarios, ofertas de trabajo y acceder a estadísticas detalladas sobre la plataforma.

  • Suscripciones premium: Los empleadores pueden suscribirse a planes premium que les permiten destacar sus ofertas de trabajo y acceder a funcionalidades avanzadas para mejorar la visibilidad de sus publicaciones.

  • Gestión de asistentes: Los empleadores con suscripción pueden invitar asistentes para gestionar las publicaciones, este paso se realiza mediante un flujo de invitación por email.

Dashboard administrativo con métricas y gráficos
Dashboard administrativo con métricas y gráficos

Prerrequisitos

  • Instancia de EMPLEAME backend corriendo.
  • NodeJS, igual o superior a la versión 18.x
  • npm

Instalación y ejecución (frontend)

  1. Clona el repositorio

    git clone https://github.com/igidio/emplea.me-frontend.git
    cd emplea.me-frontend
  2. Instala las dependencias

    npm install
  3. Configura las variables de entorno

    Crea un archivo 📄.env a partir de la plantilla:

    cp .env.template .env
  4. Actualiza las variables de entorno.

  5. Inicia la aplicación

    npm run dev

La aplicación estará disponible en 🔗http://localhost:3000. Asegúrate de que el backend esté corriendo y configurado correctamente para que la aplicación frontend pueda comunicarse con él.

Datos de prueba

Desde el servidor se incluyen un conjunto de datos por defecto que se pueden cargar mediante los seeders. Estos datos incluyen usuarios de prueba, ofertas de trabajo, postulaciones y otros elementos necesarios para probar las funcionalidades de la plataforma. Algunos de los usuarios de prueba disponibles en el seeder de usuarios incluyen:

RolUsernameEmailContraseña
SUPERUSERsalva123salva@example.compassword123
ADMINmarianamariana@example.compassW0RD222
EMPLOYERpamelapamela@example.compassW0RD333
SEEKERjuanjuan@example.compassW0RD444

Algunas de las tarjetas de crédito / débito de prueba disponibles para Stripe son:

Tipo de tarjetaNúmero de tarjeta
Visa4242424242424242
Visa (débito)4000056655665556
Mastercard5555555555554444
Mastercard (débito)5200828282828210
American Express378282246310005
UnionPay6200000000000005
UnionPay6200000000000047
Discover6011111111111117
Discover6011981111111113

La fecha de expiración de las tarjetas de prueba puede ser cualquier fecha futura, y el código de seguridad (CVC) puede ser cualquier número de tres dígitos (o cuatro dígitos para American Express).

Inicio de sesión, con opciones de autenticación tradicional y social
Inicio de sesión, con opciones de autenticación tradicional y social
Vista de planes premium con tarjetas comparativas
Vista de planes premium con tarjetas comparativas

Licencia

Este proyecto está bajo la Licencia MIT. Consulta el archivo 📄LICENSE.md de los proyectos para más detalles.

© 2026 igidio