Molochou
← Все работы

Kollaba

Где дизайнеры и разработчики находят друг друга для сайд-проектов. Спроектирован, собран и запущен в одиночку.

ПлатформаДизайн и разработка2026kollaba.appCase study

Вы публикуете проект, называете недостающую роль и нужный опыт. Люди откликаются, вы принимаете, принятый отклик открывает чат. Не доска вакансий и не фриланс-биржа: без ставок, без счетов, без ролей клиента и подрядчика.

Год
2026
Роль
Всё: дизайн, фронтенд, модель данных, модерация
Объём
UI/UX · веб-приложение · мобайл · логотип · брендинг
Стек
Next.js 16 · Supabase · Cloudflare R2 · Resend

Проблема

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

Чтоясделал

Сначала сказать, чем это не является
01

Сначала сказать, чем это не является

Лендинг тратит первую строку на исключения: не вакансии, не фриланс, просто совместная работа. Продукт работает, только если человек приходит с правильным ожиданием, а неправильное ожидание - дефолтное: все предполагают, что деньги переходят из рук в руки.

Поиск в обе стороны
02

Поиск в обе стороны

Опубликуйте проект и ждите откликов, или откройте каталог людей и ищите сами. Фильтры - три вещи, которые реально решают матч на сайд-проекте: роль, уровень опыта и открыт ли человек прямо сейчас.

03

Лента, собранная для листания с телефона

Каждая карточка несёт обложку, недостающую роль, стек и автора - достаточно, чтобы за секунду решить, открывать ли. Принятый отклик открывает чат, так что путь от «интересно» до «разговариваем» - два тапа.

04

Весь продукт - одна кнопка

Страница проекта помещается на один экран: обложка, стек, конкретная недостающая роль, команда на сегодня и одна липкая кнопка «хочу участвовать». Без формы, без сопроводительного письма, без сочинения сообщения. Автор получает уведомление в ту же секунду, а принятие делает три вещи сразу: открывает разговор, добавляет человека в команду и замыкает цикл. Всё остальное на платформе существует, чтобы довести кого-то до этой кнопки.

05

До ленты нельзя дойти незаполненным

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

Блог, в который может писать любой
06

Блог, в который может писать любой

Теги, поиск, обложки, markdown. Платформе для поиска соавторов нужен повод возвращаться до того, как он вам понадобится, и чужие билд-логи - этот повод.

07

Купить платформу, построить продукт

Аутентификация, база, realtime и row-level security - из Supabase; картинки из R2, защита от ботов из Turnstile, почта из Resend. Ценность продукта не в обслуживании стора сессий или флота вебсокетов, поэтому ничего из этого не написано руками. Каждый оставшийся час ушёл в то, что делает продукт особенным, а не в то, что позволяет ему существовать.

Модерация вышла в релизном коммите
08

Модерация вышла в релизном коммите

Turnstile на регистрации, спам-фильтр на пользовательском контенте, жалобы и удаление аккаунта были с первого дня. Платформа с публичными профилями и открытыми сообщениями становится мишенью для спама немедленно; дособирать модерацию потом значит модерировать публично, пока строишь инструменты.

Подкапотом

Авторизация в базе, а не в страницах

Одиннадцать таблиц, каждая с row-level security. Страница, забывшая фильтр, возвращает ничего, а не чужие данные. На платформе, чей контент - личные сообщения незнакомцев, эта разница и есть весь продукт.

Пять языков, разведённые до того, как понадобился первый

Каждая строка интерфейса живёт в JSON-словаре, около четырёхсот ключей на английском, русском, испанском, португальском и немецком. Неиспользуемые локали импортируются динамически, так что нести пять стоит столько же, сколько одну. Продукт выходит только на английском. Включить остальные - изменение роутинга, а не переписывание: разница между решением сейчас и проектом на потом.

Пять коммитов публичной неправоты

OAuth ломался на редиректе: пользователи возвращались с валидной сессией и попадали на страницу логина. За прокси колбэк выводил неправильный origin, кука писалась для одного хоста и читалась с другого. Дефолты фреймворка описывают машину, на которой фреймворк тестировали, а не ту, куда деплоите вы.

Кука, которую могли отдать всем

Переключатель языка пишет куку, значит каждая читающая её страница отказывается от статического рендера. Пропустите это - и язык первого посетителя запечётся в закешированную страницу для всех следующих. Баг, который никогда не проявляется в разработке, где посетитель всегда один.

Графит, один акцент, без второй темы

Только тёмная, потому что аудитория уже там живёт: дизайнеры и разработчики проводят день в тёмных редакторах, и тёмный холст читается как родной, а не как настройка. Графит вместо чистого чёрного, потому что чёрный сплющивает три сложенных серых, несущих глубину, и даёт ореолы вокруг светлого текста на OLED. Изумрудный - единственный хроматический цвет в оболочке, и значит он одно: да. Доступен, принят, основной. Достаточно редкий, чтобы его нельзя было не заметить, и он оставляет обложки проектов и аватары единственным другим цветом на странице. Вторая тема удвоила бы каждое визуальное решение и каждое ревью, чего продукт без пользователей позволить себе не может.

Результат

ОдиннадцатьТаблиц под RLS
Пять, релиз на английскомЛокалей разведено
ТриСпособов войти
Следующий проектCercanoМессенджер