Vitrina de ofertas de trabajo tech en Chile: pegas.devschile.cl
Listado con búsqueda y filtros, página por pega y por categoría, pegas similares
al pie de cada aviso, cuentas para guardar y reaccionar, SEO (sitemap, schema.org/JobPosting, OG images) y
analítica en PostHog.
Los aportes son bienvenidos — ver CONTRIBUTING.md. Se puede levantar el sitio completo en local, con datos de ejemplo, sin credenciales de nada.
Hacen falta pnpm y Docker.
pnpm install
cp .env.example .env
docker compose -f docker-compose.dev.yml up -d # Postgres local
pnpm dev:db # esquema + 60 pegas de ejemplo
pnpm dev # http://localhost:3000Las 60 pegas de dev/fixtures.json son inventadas —empresas, avisos y URLs— y
cubren las 13 categorías, con y sin sueldo, remotas y presenciales, más algunas
desactivadas para el panel de administración. Alcanzan para trabajar en
cualquier parte de la interfaz.
Para entrar con sesión iniciada sin registrar aplicaciones OAuth, abre
http://localhost:3000/auth/dev. Ese atajo solo existe con pnpm dev: en un
build de producción la ruta responde 404.
| Framework | Nuxt 4 con renderizado en servidor |
| Design system | @devschile/chucao |
| Animación | motion-v |
| SEO | @nuxtjs/seo |
| Datos | PostgreSQL, consultado desde server/api/ |
| Tests | Vitest + @vue/test-utils, cobertura mínima 80% |
app/ # páginas, componentes, composables (lo que ve el navegador)
server/api/ # la API que consume el propio sitio
server/utils/ # acceso a la base, sesiones, roles
dev/ # esquema y datos de ejemplo para desarrollo local
test/ # helpers de test
Convenciones de código: AGENTS.md. Marca y diseño:
DESIGN.md.
pnpm test # una pasada
pnpm test:watch # modo watch
pnpm test:coverage # con cobertura (falla bajo 80%)
pnpm build # build de producción¿Buscas la página para auspiciar? Se mudó al portal B2B de devsChile:
empresas.devschile.cl/pegas-devschile.
Este repo sirve los espacios; el portal los vende. La ruta vieja
(/publicitar) queda como 301.
Las pegas reales las ingiere un pipeline que lee newsletters de LinkedIn Jobs y las APIs públicas de GetOnBoard, WorkingNomads, Jobicy y Himalayas, las deduplica, las clasifica en 13 categorías y las guarda en la misma base que este sitio consulta. Ese pipeline vive en un repositorio aparte y privado, junto con el esquema de la base y los scripts de operación.
Para aportar acá no hace falta: dev/ trae una copia del esquema y datos de
ejemplo, y el sitio no distingue entre esos y los reales.
Si un cambio necesita una columna que dev/schema.dev.sql no tiene, el que
quedó atrás es ese archivo — abre un issue y se regenera, no lo edites a mano.
En ese mismo repositorio vive el proceso que calcula qué pegas se parecen entre
sí y deja el resultado en pegas_similares, de donde sale el bloque de "Pegas
similares" al pie de cada aviso. No corre al ingerir sino cada cierto tiempo
sobre las pegas activas: una pega de hace meses tiene que poder recomendar una
de esta semana, y las vecinas que guardó se le van venciendo.
El cálculo no vive acá a propósito: qué se le ofrece a alguien después de leer
un aviso es una decisión de producto, y este repositorio es público. Acá solo
se lee la tabla y se registra qué hizo la gente con lo que se le mostró — ver
server/utils/relacionadas.ts.
Mientras dev/schema.dev.sql no traiga esa tabla, el bloque no aparece en
local y el resto del sitio funciona igual: pnpm dev:db lo dice al sembrar y
la página de detalle no se entera.
MIT