Complete web application for viewing, searching, and filtering job offers with the ability to generate automated summaries using artificial intelligence.
This project uses a monorepo architecture with two separate environments:
- frontend/: React application with Vite
- backend/: REST API with Express
JavaScript framework for building reusable UI components with efficient rendering.
Ultra-fast build tool for modern JavaScript projects. Offers instant development with HMR (Hot Module Replacement) and optimized build times.
Vite plugin that uses SWC (Rust-based compiler) to compile React 20x faster than Babel.
Minimalist and frictionless state management library for React. Simplifies global state management with a lightweight API.
Official routing library for React applications, enabling SPA (Single Page Application) navigation with declarative components.
Lightweight library to convert Markdown to HTML, used for rendering formatted content.
Library for handling real-time data streams, used to process incremental AI responses.
Minimal and flexible Node.js web framework providing a robust set of features for building RESTful APIs.
Official Vercel library for integrating AI into web applications. Facilitates streaming responses from language models.
Official SDK for accessing OpenAI language models (GPT-5.2 in this project).
Middleware to enable CORS (Cross-Origin Resource Sharing), allowing frontend requests across different domains.
Middleware to protect endpoints against abuse via Rate Limiting (5 requests per minute on the AI endpoint).
TypeScript-first schema validation library. Used to validate input data in APIs with type-safe schemas.
- GET /jobs: List all job offers with filtering and pagination
- GET /jobs/:id: Get a specific offer
- POST /jobs: Create new offer
- PATCH /jobs/:id: Partial update of offer
- GET /ai/summary/:id: Generate offer summary using AI (with streaming)
# Start backend server in development
npm run dev:backend
# Start frontend server in development
npm run dev:frontendThe backend server runs at http://localhost:1234 and the frontend uses Vite with Hot Module Replacement.
Aplicación web completa para visualizar, buscar y filtrar ofertas de trabajo con la capacidad de generar resúmenes automatizados utilizando inteligencia artificial.
Este proyecto utiliza una arquitectura monorepo con dos entornos separados:
- frontend/: Aplicación React con Vite
- backend/: API REST con Express
Framework de JavaScript para construir interfaces de usuario con componentes reutilizables y renderizado eficiente.
Herramienta de construcción ultra-rápida para proyectos modernos de JavaScript. Ofrece desarrollo instantáneo con HMR (Hot Module Replacement) y tiempos de build optimizados.
Plugin de Vite que utiliza SWC (compiler basado en Rust) para compilar React 20x más rápido que Babel.
Librería de state management minimalista y sin fricciones para React. Simplifica la gestión del estado global con una API muy ligera.
Librería de enrutamiento oficial para aplicaciones React, permitiendo navegación SPA (Single Page Application) con componentes declarativos.
Librería ligera para convertir Markdown a HTML, utilizada para renderizar contenido formateado.
Librería para manejar streams de datos en tiempo real, utilizada para procesar respuestas de IA incrementales.
Framework web minimalista y flexible para Node.js. Proporciona un conjunto robusto de features para construir APIs RESTful.
Librería oficial de Vercel para integrar inteligencia artificial en aplicaciones web. Facilita el streaming de respuestas de modelos de lenguaje.
SDK oficial para acceder a los modelos de lenguaje de OpenAI (GPT-5.2 en este proyecto).
Middleware para habilitar CORS (Cross-Origin Resource Sharing), permitiendo peticiones desde el frontend a través de dominios diferentes.
Middleware para proteger los endpoints contra abuso mediante límites de Rate Limiting (5 peticiones por minuto en el endpoint de IA).
Librería de validación de esquemas TypeScript-first. Se utiliza para validar datos de entradas en las APIs con tipos seguros.
- GET /jobs: Listar todas las ofertas de trabajo con filtrado y paginación
- GET /jobs/:id: Obtener una oferta específica
- POST /jobs: Crear nueva oferta
- PATCH /jobs/:id: Actualización parcial de oferta
- GET /ai/summary/:id: Generar resumen de oferta usando IA (con streaming)
# Iniciar servidor backend en desarrollo
npm run dev:backend
# Iniciar servidor frontend en desarrollo
npm run dev:frontendEl servidor backend corre en http://localhost:1234 y el frontend utiliza Vite con Hot Module Replacement.