Backend service for WorkWay. This service provides company/job discovery APIs, filter and feed APIs, sitemap generation, and Greenhouse-based ingestion endpoints.
- Node.js (ES modules)
- Express 5
- PostgreSQL (
pg) dotenv,nodemon
src/server.js: app bootstrap, DB init, route mount, graceful shutdown.src/config.js: environment/config mapping.src/routes/: API route handlers.src/services/: business logic.src/dao/: SQL queries and DAO abstractions.src/utils/: logger, constants, parsing and classification helpers.src/data/greenhouseCompanies.js: seed list of Greenhouse namespaces.docs/DETAILED_DOCS.md: detailed architecture and endpoint reference.
npm installCreate .env in repo root (or export env vars):
APP_ENV=dev
POSTGRES_DB_HOST=localhost
POSTGRES_DB_PORT=5432
POSTGRES_DB_USER=postgres
POSTGRES_DB_PASSWORD=root
POSTGRES_DB_DATABASE=eqhqdb
POSTGRES_DB_MAX_CONNECTIONS=20
PORT=3000npm run devOr:
npm startService defaults to http://localhost:3000.
GET /health-> process uptime and timestamp.GET /-> plain server-running response.
All main APIs are under:
/api
Route groups:
/api/company/api/job/api/feed/api/filter/api/cron/api/sitemap.xmland/api/sitemaps/*
GET /api/job/list— Paginated job listing with search and filters (e.g.?q=backend&page=1&limit=20&domain=software-engineering&employment_type=full-time&experience_level=senior&location=remote&sort=recent). Returnsjobs,meta,applied_filters, andfacets.GET /api/job/filters— Facet counts for domain, employment type, and experience level (for initial filter UI).
See detailed request/response behavior in:
docs/DETAILED_DOCS.md
The service exposes cron-style HTTP endpoints that:
- load Greenhouse, Ashby and YC companies,
- fetch jobs for the companies already present in DB,
- classify jobs (domain, level, employment type),
- upsert jobs/companies into PostgreSQL.