Стек частково вже називав: Python, htmx, трохи JavaScript для інтерактиву. Service worker, щоб сайт відкривався в офлайні і сам казав, що карта вже неактуальна. Cloudflare тримає тунель, захист від ботів і CDN.
Google Analytics стоїть, щоб бачити, чим люди реально користуються, і з цього вирішувати, що робити далі.
Deployment максимально дурний: Docker Compose збирає образ прямо під час деплою, без зовнішнього registry. Крутиться воно в Portainer, який живе в Umbrel на домашньому сервері і раз на хвилину підтягує main. Gitlab також на Umbrel.
Спочатку я хотів винести це на безкоштовну віртуалку в GCP, щоб не залежати від домашнього світла, але там portainer-агент не вміє проксювати BuildKit, і збірка падає з
http2: frame too large. Переніс додому, шоб швидше вийти в прод.Моніторинг — Prometheus і Grafana, які й так підняті в моєму homelab, плюс Uptime Kuma, щоб знати, що сайт взагалі відповідає.
Проте найгірша поломка тут не "сайт впав", а "сайт віддає 200, а дані в ньому тригодинної давнини". Жоден зовнішній пробник такого не побачить, тому окремою метрикою я віддаю вік останнього успішного забору по кожному джерелу, і алерт висить саме на ній.
Всередині немає ніяких AI- чи ML-тулів, там набір if-ів, регекспів і маленька state machine. Працює доволі непогано.
Зберігається кожен пост з каналів і кожне рішення, яке по ній ухвалене. Періодично переганяю цю історію через Claude Code і дивлюсь, де алгоритм можна покращити, і вже з цього правлю правила. В результаті воно стає краще.
По суті проект — це реверс інжиниринг. Десь є системи, в яких дрони показані точно, доступ обмежений з відомих причин, хтось транслює звідти інфу текстом, а сайт мапить це назад на мапу. Звучить тупо, але дуже інтересно.
Тестується все агентом, який запускає playwright-cli. Ним же і перевіряє баги. Також є юніт тести, зараз десь 500, http залежності тестуються через vcr.
А і мало не забув — Redis тут немає, натомість SQLite, бо з ним банально швидше вайбкодити. Файл лежить поруч з процесом, схема міняється на льоту, нічого не треба підіймати окремим контейнером і потім за ним доглядати. По перфомансу питань нема взагалі.
Кількість користувачів росте, покращення залітають, все добре. Іроні в тому, що це саме той проект, де хотілось, аби він не був нікому потрібен. Але хочеться одного, а реальність підносить інше, тому будемо поки його розвивати.
Пишіть в коменти ідеї, зауваження і побажання. Також попрошу пошарити серед друзів, сусідів і колег.