В работе
K39
Путеводитель по Калининградской области
Помогает выбрать место и спланировать поездку: карта, маршруты и страницы достопримечательностей.
Создал веб-приложение и редакционный процесс. Страницы собираются из PostgreSQL на сервере; для AI-агентов предусмотрен отдельный доступ к черновикам без права публикации.
Задача
Туристу нужно понять, куда пускают, когда открыто, сколько стоит и как доехать. Я хочу собрать это на одном сайте, где у каждого места своя страница с источниками, и получать посетителей из поиска.
Что сделано
k39.online: страницы мест (форты, замки, пляжи, курорты, еда), карта, маршруты, подборки и квесты, каталог заведений с расписаниями и ценами, поиск по сайту. Редакторы работают в админке, владельцы заведений правят карточку в кабинете. Первая версия в 2025 году была социальным продуктом с подписками и лентой. 10 октября 2026 я перезапустил репозиторий как контентный сайт, и с тех пор в нём 263 коммита. Задачи ведутся в GitHub Issues, код пишут агенты Cursor и Codex, решения фиксируются в ADR.
Ключевые решения
Весь контент в Postgres, админка внутри приложения
Раньше тексты лежали в markdown и синхронизировались в базу, и копии расходились. Теперь одна база, а опубликованные страницы рендерятся на сервере, это нужно для SEO.
Агент предлагает, человек публикует
Агенты пишут через MCP-сервер на самом сайте с отдельным токеном. Их правки к живой странице уходят в очередь, страница не меняется, пока редактор не опубликует. Подробно в статье о правах черновиков.
Факты отдельно от текста
Часы работы, цены и телефоны хранятся как отдельные факты с источником и датой проверки. Проверить один факт можно без перечитывания всей страницы, а «открыто сейчас» считается по расписаниям, а не по тексту.
Своя аналитика без cookies
Скрипт меньше 2 КБ, IP не хранится, посетитель определяется хешем, который меняется каждый день. Причины: требования 152-ФЗ и нежелание отдавать трафик внешним сервисам.
Стек
- Nuxt 4
- Vue
- Reka UI
- PostgreSQL
- Drizzle ORM
- MapLibre GL и PMTiles
- sharp
- Zod
- @nuxtjs/mcp-toolkit
- Docker на Dokploy
Статус и что дальше
Сайт открыт. Предложения партнёров на страницах уже показываются, но выдачи кодов, бронирования и оплаты нет. Дальше: перевести страницы на чтение из слоя фактов и проверить, может ли сайт зарабатывать.