Pipeq
Таск-менеджер для небольших команд. PWA, спроектирован и собран в одиночку, offline-first.
Канбан-доска, которой команда действительно пользуется. Доска с продуманными дефолтами, без настройки перед первым использованием и без оплаты за место: создайте её, позовите команду по ссылке или QR-коду и двигайте карточки.
- Год
- 2026
- Роль
- Всё: дизайн, фронтенд, API, база, инфраструктура
- Стек
- Next.js 15 · Bun + Hono · PostgreSQL · Docker
- Статус
- Запущен, ~280 коммитов
Проблема
Командные трекеры вырастают в CRM. Команда, которой была нужна доска с карточками, в итоге настраивает воркфлоу, кастомные поля и правила автоматизации, и платит за каждое место за эту привилегию. Инструмент становится второй работой.
Чтоясделал
Доска и карточка, бок о бок
Фирменный десктопный жест: открытая карточка выезжает панелью, а не накрывает доску. Владелец, дедлайн, участники, прогресс, чеклист, теги и вся ветка комментариев, не теряя из виду, где стоит карточка.
Два лейаута, один продукт
Мобильный и десктоп - не один экран на разной ширине. Телефон получает нижний таб-бар, колонки-таблетки со свайпом и плавающую кнопку действия, всё достижимо одной рукой. Десктоп получает постоянную боковую панель и выезжающую карточку. Два дерева компонентов, две модели навигации, выбранные на брейкпоинте, а не один лейаут, продавленный через медиазапросы.
Один переключатель превращает доску в список
Те же карточки плотным сортируемым списком: статус меняется на месте, чекбокс закрывает карточку не открывая её. Для дней, когда работу хочется читать, а не разглядывать.
Месяц и его форма
Дедлайны, разложенные по сетке месяца, просроченное красным. Вид, который отвечает, как выглядит эта неделя, раньше, чем кто-то спросит об этом в чате.
Поиск, который пересекает команды, но не тенантов
Оверлей под клавиатуру: ищет по этой доске или по всем вашим командам и прыгает прямо к карточке. С дебаунсом и защитой от гонки, чтобы медленный ранний ответ не переписал более новый.
Команд много, вы один
Состойте в скольких угодно командах и переключайтесь мгновенно. Каждая команда красит акцент в свой цвет в рантайме, приглашения уходят QR-кодом или ссылкой, а владение передаётся автоматически, когда кто-то уходит, так что осиротевших команд не бывает.

Хомяк, который зарабатывает костюм по мере скролла
У лендинга была одна задача: объяснить продукт без единой стоковой иллюстрации. Поэтому объясняет маскот: он едет по пиксельной трубе вниз по странице, падает между станциями и приземляется с приплюском. Пять станций, пять спрайтов, и порядок - это аргумент: он начинает ни с чем и заканчивает полностью экипированным. Прокрутите вверх - он разденется.
Прокатитеего
Механика лендинга, пересобранная здесь и живая. Крутите дальше.

Подкапотом
Авторизация живёт в Postgres
Каждая таблица ограничена воркспейсом, изоляция обеспечена row-level security, а не памятью о where-условии. Отдельная роль базы, зарезервированное соединение на запрос, чтобы контекст тенанта не утёк через пул, и самопроверка на старте, которая убеждается, что политики запрещают чтение чужих данных, прежде чем процесс начнёт принимать трафик.
Записи упорядочены, а не повторены
Два быстрых перемещения одной карточки могли прийти не по порядку и оставить доску неправильной. Лечение - сериализация записей. Ретрай спрятал бы гонку, а не убрал её.
Деплой - одна кнопка
GitHub Actions синхронизирует репозиторий rsync-ом и пишет креденшалы из Secrets. Инфраструктурные секреты генерируются при провижининге, деплой их не трогает. Править ключи на сервере - не воркфлоу: следующий деплой их перезапишет.
Лендинг - это middleware, а не второй сайт
Разлогиненный посетитель получает статический лендинг, выбранный по устройству; живая сессия проваливается прямо в приложение. Один деплой, один домен, и маркетинг, который не может разъехаться с продуктом.