Tofu Maps — личные списки мест на карте
Pet project · Public demo · Web
Роль: Product Designer (end-to-end) + разработка (HTML/CSS/JS + Flask)
Статус: Public demo · tofumaps.com
Product Hunt: #5 Product of the Day
2025 - по настоящее время
Я сделал Tofu Maps как “плейлисты, но на карте”: сервис, где можно быстро собрать список мест, добавить заметки и поделиться ссылкой на просмотр или совместное редактирование — без регистрации и онбординга. В основе — local-first хранение с облачной синхронизацией “по требованию” только при шаринге. Проект про продуктовые компромиссы: меньше фич → больше доверия и понятности.

Контекст
Я постоянно сохраняю места: кафе, сервисы, улицы, точки “вернуться позже”. Со временем это превращается в хаос: - метки разбросаны по разным приложениям - нет ощущения “личного журнала мест” - шаринг ломается из-за разных карт у друзей и отсутствия общего формата
Проблема
Карты отлично решают навигацию, но слабо решают сценарий личных списков и совместного планирования: - сложно быстро собрать подборку “вот 12 мест” - неудобно добавлять контекст (почему это место важно) - совместное редактирование часто требует аккаунтов и установки одинаковых приложений
Цель продукта
Сделать инструмент, который:
- превращает точки в осмысленные списки
- позволяет делиться и редактировать вместе
- не требует регистрации и обучения
Lists of places are like playlists — but on a map.

Роль и вклад
Я сделал проект end-to-end: - discovery, формулировка сценариев, приоритизация фич - UX / IA / UI - прототипирование - разработка первой версии (Flask, HTML/CSS/JS, OSM)
Ключевые решения
Старт без аккаунта
Регистрация — главный фрикцион для сценария “быстро собрать места”.
Решение: авторизация через ссылки: - view-link → просмотр - edit-link → редактирование и коллаб
Ссылка стала минимальной формой доступа: пользователю не нужно ничего “создавать”, чтобы увидеть ценность.
Local-first + Cloud on demand
Я разделил хранение на два слоя:
Local-first (по умолчанию) - данные живут в браузере - мгновенно и приватно - приложение ощущается быстрым, даже при слабой связи
Cloud on demand (только при шаринге) - включается, когда пользователь делится списком - мультидевайс и совместная работа - серверная часть остаётся “опцией”, а не обязательным условием
Это компромисс между приватностью/скоростью и коллаборацией.
Минимальный набор фич под реальные сценарии
В первую версию вошло только то, что закрывает базовые потребности: - создание списка мест - добавление заметки к месту - добавление мест по поиску или кликом по карте - открыть место в навигаторе - шейр по ссылке или QR-коду
Трудности и честные ограничения
Данные OSM: бесплатно ≠ полно
OpenStreetMap открыт и бесплатен, но на карте может не быть нужных POI.
Чтобы не ломать сценарий “я хочу сохранить место сейчас”, я добавил форму для ручного добавления отсутствующих данных.
Коллаборация: пока не real-time
Текущая реализация не позволяет двум пользователям параллельно править одну карту без конфликтов.
Сейчас это осознанное ограничение MVP: лучше стабильный single-editor, чем “полуработающий real-time”.
Результат
- Рабочий продукт, которым я пользуюсь сам (dogfooding)
- Public demo без онбординга: ценность понятна за секунды
- Product Hunt: #5 launch of the Day
- Основная ценность — доверие и простота: “открыл → понял → сохранил → поделился”
Метрики (операционные)
- Расходы на домен: $20/год
- Расходы на сервер: $4–6/мес
Что дальше
- Real-time коллаборация (конфликты, блокировки, курсоры/присутствие)
- Кастомизация списков и точек (иконки/цвета/порядок/теги)
- Roadmap на год вперёд: планирую последовательно добавить множество фич и развивать продукт итерациями
Мой тейк
Tofu Maps — про продуктовые компромиссы: - иногда не добавить фичу — лучше, чем добавить - иногда UX важнее growth - иногда архитектура должна подчиняться сценарию пользователя (local-first), а не “как принято”
Технологии
OSM · Flask · HTML · CSS · JavaScript