Народная карта клёва: сделал рыбакам сервис в духе gdebenz

Есть класс сервисов, которые бесполезны, пока в них нет данных, и наполняются только если сервис уже полезен. Классическая проблема курицы и яйца. Народная карта рыбалки — ровно из этих. Расскажу, как я делал «Где рыба?» и какие решения по дороге оказались важнее кода.

С чего началось

После недавних событий я наткнулся на gdebenz — народную карту, где перечислены АЗС, а пользователи подтверждают наличие топлива своими голосами. Механика примитивная, но именно она и подкупает: сервис не пытается всё знать сам, данные держит сообщество, а доверие набирается за счёт подтверждений.

И я подумал: у рыбаков та же боль, только острее. «Где клюёт» — самая закрытая информация в рыбалке. Её не гуглят, ею не делятся с чужими. Но внутри своего круга рыбаки охотно обмениваются: «вчера на карьере брал судак на джиг». А единого места, где это собрано, нет. Значит, можно сделать рыбакам такой же народный сервис: простое добавление мест и голоса за отчёты. Гипотеза: если отметить клёв — это один тап, люди будут делиться, как делятся в чате, только структурированно и для всех.

Что под капотом

  • Next.js (App Router) — карта на Leaflet, серверный рендер страниц мест.
  • Self-hosted Supabase (Postgres + PostGIS + PostgREST + GoTrue) на своём сервере за Traefik.
  • Кластеризация точек через supercluster, геозапросы на PostGIS.

Ничего экзотического — стек выбран под скорость проверки гипотезы, а не под хайп. Чтобы карта не встретила первого рыбака пустотой, на старте на ней уже был базовый слой мест-кандидатов, а дальше эти точки оживляют отчёты.

Что важнее технологий — доверие

Пара продуктовых решений, которые оказались важнее стека, — и все они про то же, что делает gdebenz живым:

  • Без регистрации. Первый отчёт человек должен поставить сразу, анонимной сессией. Захотел закрепить за собой — вошёл через Яндекс ID, и анонимные точки переносятся на аккаунт.
  • Размытие координат. Никто не выдаст заветный «пятак». Поэтому при добавлении места можно поставить точку не точно, а в радиусе ±500 м или ±2 км. Это снимает главный барьер: «не хочу палить своё место всем».
  • Голоса за отчёты. Один отчёт легко приукрасить, поэтому есть подтверждение «подтверждаю / не клюёт» и антиспам-лимиты. Ровно та механика доверия, что и у народных карт: сообщество само отсеивает враньё.

Что дальше

Сейчас поверх карты выросла аналитика: «что ловится в этом районе» (по видимой области), «когда клюёт» по времени суток, фильтры по рыбе и снасти. Следующий фокус — SEO: каждое место это отдельная страница, а длинный хвост «рыбалка на <водоём>» — ровно тот трафик, который ищут рыбаки.

Если ловите — загляните и отметьте место: https://gde-ryba.ru. Проект живёт данными сообщества, и каждый честный отчёт делает карту чуть полезнее для следующего.

Буду рад фидбэку в комментариях — особенно от тех, кто сам держал pet-проект с проблемой холодного старта.

1