Около года назад мы начали делать ComfyMarket — площадку, где разработчики могут размещать готовые сайты, а покупатели находить подходящее решение и связываться с его автором.
Идея появилась довольно просто. Мы посмотрели, что уже есть на рынке, и не нашли специализированной площадки именно под продажу готовых веб-решений. Фриланс-бирж много, студий тоже, есть магазины шаблонов и доски объявлений. Но если у разработчика уже есть готовый сайт или сервис и он хочет выставить его как отдельный продукт, понятного места для этого мы не нашли.
На старте проект выглядел гораздо скромнее, чем сейчас. MVP можно было описать одной строкой:
регистрация => профиль продавца => создание товара => карточка => контакт с продавцом.
На разработку в итоге ушёл примерно год. За это время простая форма добавления товара превратилась в многошаговый конструктор с черновиками и предпросмотром, появилась модерация, затем повторная модерация изменений, realtime-чат, уведомления, аналитика для продавцов и отдельная инфраструктура вокруг проекта.
По дороге мы ещё и полностью поменяли первоначальную схему монетизации.
Я один из создателей ComfyMarket, занимаюсь архитектурой и frontend-разработкой. В статье хочу рассказать о тех частях проекта, которые на старте казались довольно обычными, а в процессе разработки разрослись намного сильнее, чем мы ожидали.
Почему Next.js
Frontend написан на Next.js и TypeScript. Для локального состояния используем Zustand, для серверных данных TanStack Query.
Next.js выбирали в первую очередь из-за SSR и SEO. Для нас было важно, чтобы карточки продуктов и другие публичные страницы нормально индексировались поисковиками. Для маркетплейса органический трафик потенциально играет большую роль, поэтому делать всё как обычное клиентское SPA не хотелось.