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() у парсері.