World Vibe Web
The distributed app store for vibe-coded projects. Browse, discover, and install open-source apps from across GitHub.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证PriceTrail — трекер цін супермаркетів з історією цін
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Трекер цін супермаркетів з історією цін: пошук товарів, картки з цінами й акціями, графік зміни ціни, перевірка «завищених» акцій. Працює як сайт і встановлюється на телефон (PWA). Зараз підтримується АТБ-Маркет (неофіційно), згодом — інші магазини.
Сайт: https://fima02.github.io/pricetrail/
Планувальник Windows (щодня 05:30) → scripts/daily.ps1 → scraper/scrape.js → site/data/*.json → git push → GitHub Actions → GitHub Pages
Ціни збираються з домашнього комп'ютера: сайт АТБ (Cloudflare) блокує запити з серверів GitHub (HTTP 403). GitHub лише публікує сайт після кожного push.
scraper/scrape.js збирає каталог atbmarket.com окремо для кожного міста зі scraper/cities.js. Асортимент і ціни залежать від магазину, тому в кожному місті береться один магазин — з найбільшим асортиментом (вибір зберігається в scraper/stores.json, його можна змінити вручну або перевибрати: node scraper/scrape.js --repick). Одне місто — ~4 хв, два міста збираються паралельно.
node scraper/scrape.js --city Хмельницькийscraper/groups.js — розділи («надкатегорії») для товарів: беруться з меню atbmarket.com, плюс ручні відповідності для категорій, яких у меню немає. Товари без відповідності потрапляють у розділ «Інше» — тоді додайте категорію в EXTRA.scripts/daily.ps1 — pull → збір → коміт → push. Журнал пишеться в daily.log.scripts/install-task.ps1 — реєструє щоденне завдання «ATB Price» у Планувальнику завдань.site/data/cities.json — список міст з даними (з координатами центрів).site/data/ukraine.json — контури областей України для мапи «Ціна в інших містах»: спрощені межі з geoBoundaries (UKR ADM1, дані OpenStreetMap, ліцензія ODbL), уже в проєкції сайту. Статичний файл, щодня не змінюється.site/data/compare/NN.json — ціни кожного товару в усіх містах (для порівняння на сторінці товару), розбиті за id % 100. Будує scraper/compare.js під час публікації (GitHub Actions) і після збору локально; у git не зберігається.site/data/cities/<місто>/extra.json — спільний каталог: товари, яких у місті немає, з цінами найближчого (по прямій між центрами міст) міста, де вони є (поле from). Будує scraper/fallback.js так само, як і порівняння; у git не зберігається.site/data/cities/<місто>/products.json — поточний каталог міста (для пошуку і карток). Товари, яких сьогодні немає в каталозі магазину, лишаються тут ще 30 днів (службове поле out); їхню ціну парсер звіряє зі сторінки товару (до 60 на місто за збір). На сайті наявність не показується.site/data/cities/<місто>/changes.json — що змінилося в останньому зборі порівняно з попереднім днем (стрічка «Що змінилося»: подешевшало, подорожчало, нові акції, акція закінчилась, нові товари). Будує scraper/changes.js.site/data/cities/<місто>/history/NN.json — історія цін міста, розбита на 100 файлів за id % 100. Зберігаються лише зміни: [дата, ціна] або [дата, ціна, ціна_без_акції] — товар у наявності; [дата, ціна, ціна_без_акції | null, 1] — товару немає в наявності, ціну взято зі сторінки товару (парсер перевіряє до 60 таких сторінок на місто за збір); [дата, null] — немає в наявності, ціна невідома. П'яте поле — ціна при оплаті карткою АТБ: [дата, ціна, null, 0, ціна_з_карткою].site/ — статичний сайт на чистому JS без збірки. Графік намальовано вручну через SVG.localStorage), подешевшання видно на сторінці «Обране» і на значку ♥. Системні сповіщення надсилає service worker (site/sw.js) через Periodic Background Sync — це працює в Chrome/Edge, коли сайт встановлено як застосунок; браузер сам вирішує, як часто перевіряти (приблизно раз на день).npm install
npm run scrape # зібрати ціни (~5–10 хв)
npm run serve # відкрити сайт на http://localhost:3000
powershell -ExecutionPolicy Bypass -File scripts\install-task.ps1
Далі все працює саме: щодня комп'ютер збирає ціни й пушить їх, а GitHub оновлює сайт. Якщо комп'ютер о 05:30 вимкнений, збір запуститься, щойно його увімкнуть.
Видалити завдання: Unregister-ScheduledTask -TaskName 'ATB Price'.
parseCards() у парсері.