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 SOF MEDICA S.A. - peViitor.ro
Translation pending
Developer toolsJavaScriptGitHub @peviitor-scrapersOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
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 |
|---|---|
SOF MEDICA S.A. | legal name, uppercase (e.g. EXAMPLE COMPANY SRL) |
Sofmedica | commercial brand |
6719715 | fiscal code (CUI), no RO prefix |
https://sofmedica.com | https://www.example.com |
https://apply.workable.com/sofmedica/ | 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/ |
Otopeni | HQ city (falls back to România in the transform) |
/ / `` | primary CSS selectors for the listing (keep the generic fallbacks after them) |
peviitor-scrapers / sof-medica-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.