КрафтАпп — редакция городского медиа в одной панели
«Красноармейский Крафт» давно живёт на трёх площадках: Телеграм, МАКС и ВКонтакте. Каждый пост нужно опубликовать трижды, каждое сообщение от жителя может прийти в любую из трёх, а у рекламы свой календарь. Вести это руками стало невозможно — так появился КрафтАпп.
Всё началось в феврале 2026 года с простого бота, который пересылал посты из Телеграм-канала в МАКС. Через несколько месяцев из него выросла полноценная платформа.
Что умеет
- Публикует сразу везде. Пост из Телеграма сам уходит в МАКС и ВКонтакте. Видео до двух гигабайт — через собственный сервер для Telegram Bot API.
- Собирает обратную связь в один ящик. Сообщения жителей со всех трёх площадок — в одном месте. В базе больше 170 тысяч сообщений, и поиск по ним работает за сотые доли секунды.
- Держит редакцию на доске. Канбан от идеи до публикации, «радар» городских источников, мониторинг местных чатов, каталог услуг и рекламный кабинет.
- Фоторедактор. Кадрирование, цветокоррекция, водяной знак отдельным слоем. Чужие водяные знаки убираются прямо на сервере, без внешних сервисов.
Из инструмента — в продукт
Летом 2026 года я превратил КрафтАпп в платформу, которую можно развернуть для другого города. Каждый новый город получает свою копию с общим кодом. Первым клиентом стало городское медиа «Мельница Ивантеевки».
Выборы
К выборам 18–20 сентября 2026 года в КрафтАппе появился публичный раздел. До выборов по нему можно было найти свой избирательный участок и кандидатов трёх уровней, после — посмотреть итоги по протоколам. Результаты сверяются по контрольным соотношениям, чтобы опечатка в протоколе не превратилась в «сенсацию».
Эвакуация
23 июля 2026 года хостинг, на котором жил КрафтАпп, попал под санкции Евросоюза. Сервер стоял в латвийском дата-центре, и его обещали отключить «в ближайшее время» — без даты.
За два дня мы вывезли всё: медиа — в облачное хранилище, базы, код и системные настройки — ещё и на мой домашний Мак. Часть медиа до этого вообще не бэкапилась, и теперь это кажется удивительным.
28 июля латвийский сервер умер вместе с данными. Платформу восстановили из копий на новом сервере за 31 минуту, потеряв примерно полчаса данных. В тот же день у нового хостера дважды возник конфликт адресов — чужая машина заняла наш IP, — и вечером КрафтАпп переехал ещё раз, уже в Москву.
Вывод я записал себе крупными буквами: не держать прод у российского хостера в европейской юрисдикции. И второй, из ранбука эвакуации: бэкап, который ни разу не разворачивали, — это надежда, а не бэкап.
Как устроено
Python, FastAPI и SQLite; Телеграм, МАКС, ВКонтакте, веб-панель и планировщик крутятся в одном процессе. Около 30 тысяч строк на Python и примерно столько же на JavaScript, больше трёхсот точек API и почти две тысячи тестов. Резервные копии — каждый час, сторожевой процесс проверяет систему каждые две минуты.
