Codync
A free, open-source 1:1 alternative to Grok Bot and Muse. Message Claude Code, Codex, Cursor and 40+ coding agents as persistent bots from your iPhone, Mac or Linux desktop. Group chats, threads, appr
Scraper pentru FME SRL - peViitor.ro
Translation pending
Developer toolsGitHub @peviitor-scrapersOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗The Node.js half of the Brewtality-3-16 self-healing job-scraper
template for peviitor.ro. node-fetch + Cheerio, ESM,
Jest.
This is a template.
scraper/config/*.json,docs/,ai/and the workflows ship{{PLACEHOLDER}}values. To make a real scraper, copy this folder into a new repo and replace them — see the placeholder list.
demoanaf.ro) by CIF — name, active/inactive status, address. Cached in tmp/company.json (7-day TTL) with a stale-cache fallback.ai/AGENTS.md.docs/jobs.md and refresh docs/company.json for GitHub Pages.npm install
npm run test:unit # 151 tests — pass with placeholders in place
npm run scrape # runs the full pipeline (no-op until configured)
| Placeholder | Fill with |
|---|---|
FME SRL | legal name, uppercase (e.g. EXAMPLE COMPANY SRL) |
FME Romania | commercial brand |
17769115 | fiscal code (CUI), no RO prefix |
https://www.fme.ro | https://www.example.com |
https://apply.workable.com/fme-romania/ | the open-positions listing page |
| `` | the job sitemap URL (or "" if the site has none) |
https://apply.workable.com/j/ | canonical job-permalink prefix, e.g. https://www.example.com/jobs/ |
Cluj-Napoca | HQ city (falls back to România in the transform) |
/ / `` | primary CSS selectors for the listing (keep the generic fallbacks after them) |
peviitor-scrapers / fme-nodejs-scraper | the derived repo's owner / name |
Then adapt parseListing and scrapeCareers in scraper/index.js to the site,
and add a test per new cascade level.
npm run test:unit # always runs (placeholder-safe)
npm run test:integration # self-skips until a company is configured + ANAF reachable
npm run test:e2e # self-skips until configured; live careers-site + API otherwise
npm run test:consistency # needs GITHUB_REPOSITORY + GITHUB_TOKEN (for a derived repo)
If the job list is built client-side, node-fetch only sees an empty shell. Set
rendering in scraper/config/scraper.json:
"rendering": { "mode": "browser", "waitSelector": ".job-card", "timeoutMs": 30000 }
static (default) never launches a browser; browser always renders;
auto renders only when the static HTML parses to zero jobs. The scrape
workflow installs Chromium only when the mode is not static. Locally:
npx playwright install chromium. Code: scraper/browser.js; tests:
tests/unit/browser.test.js (fake Playwright) and
tests/integration/browser-live.test.js (real Chromium, skipped if absent).
MIT — see LICENSE. Managed by ASOCIATIA OPORTUNITATI SI CARIERE for the peviitor.ro job board.