Лáбонька

labonka.ru ↗
Роль Product Designer & Developer
Тип
SaaSFull-stackPersonal Project
Период Февраль 2026 — наст. вр.
Стек Next.js 14 · Prisma · PostgreSQL

О продукте

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

Проект уникален по формату: это полный цикл от UX-исследования и проектирования до фронтенда, бэкенда, базы данных и деплоя на собственный сервер. Разработка ведётся в связке с Claude Code — что само по себе стало экспериментом по интеграции AI в дизайн-разработку.

Что реализовано

Заявки и статусы
Канбан и список с цветовыми метками срочности. Просроченные и сдающиеся завтра — всегда на виду. Инлайн-редактирование без лишних переходов.
Партнёрские связи
Лаборатория и клиника работают в общем пространстве: видят совместные заявки, переписываются, передают файлы. Финансы у каждой стороны — свои.
Биллинг и документы
Счёт или акт формируется автоматически после приёмки. Реквизиты подставляются сами, нумерация сквозная без пропусков.
Аналитика и зарплаты
Выручка, средний чек, эффективность, топ услуг и партнёров. Зарплата техников считается автоматически — процент или фиксированная сумма за каждую услугу.
Коммуникация
Встроенный мессенджер между сотрудниками и партнёрами. Комментарии к заявке, аннотации на фото, просмотр 3D-моделей — всё внутри системы.
Кросс-платформенность
Браузер, настольное приложение (Mac/Win) и Android — везде одинаково. Открыли на телефоне, продолжили на компьютере.
Пациенты и материалы
Картотека с историей работ по каждому пациенту. Учёт расходных материалов — себестоимость видна по каждой заявке и за период.
Роли и безопасность
Гибкие права: каждый видит только то, что ему нужно. Чужая зарплата, статистика, прайс — закрыты от тех, кому не положено.

Интерфейс

Ключевые решения

Эволюция продукта

Продукт начинался как трекер для одной зуботехнической лаборатории. На одном из ранних обсуждений пользователь предложил конкретное решение: парсинг писем от клиник и чат-бот в Telegram для приёма заявок.

Технически это было реализуемо — но я увидел проблему. Клинике всё равно нужно было бы держать под рукой форму в нужном формате, помнить про бота, следить за ответами в Telegram. Автоматизация накладывалась поверх неудобного процесса, не устраняя его.

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

Я предложил другое: дать клинике прямой доступ в ту же платформу. Заявка создаётся там, где она и будет выполняться — обе стороны видят одно и то же, каждая со своей ролью и своими правами.

Из этого решения выросла вся архитектура: партнёрские связи между организациями, разграниченные права, приватные финансы для каждой стороны. Из трекера для одной лаборатории продукт стал рабочей средой для двух организаций.

Комментарии, файлы и мессенджер

Один из пользователей обратился с проблемой: не мог найти нужное сообщение от врача. Искал в Telegram, потом в Max — и в итоге нашёл в почте скан, который был нужен для производства работы.

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

Я решил проверить гипотезу: если переписка и файлы будут там же, где находятся сами заявки, они перестанут теряться. В качестве эксперимента добавил комментарии к каждой работе, возможность прикладывать файлы прямо к заявке и личные сообщения между участниками.

Рабочее общение полностью переехало в платформу. Скан от врача, договорённость о сроках, уточнение по составу работ — всё хранится рядом с самой заявкой. Это стало одной из главных причин, по которым пользователи не хотят возвращаться к прежним инструментам.

История изменений

Менеджер лаборатории при редактировании заявки случайно снял исполнителя с работы. Никто этого не заметил — работа просто не попала в производство. Обнаружилось это только когда клиника за пару дней до сдачи поинтересовалась состоянием заявки.

Чтобы выяснить кто и когда внёс изменение, мне пришлось поднимать серверные логи вручную. Это отняло время и не давало гарантий: следующая похожая ситуация потребовала бы того же.

Я добавил историю изменений к каждой заявке: кто и когда изменил статус, состав работ, назначения, описание — всё фиксируется автоматически с отметкой времени и автором. Без ручного ввода, без дополнительных действий от пользователей.

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

Цифры

2
стороны на каждую заявку — лаборатория и клиника видят разные срезы одного объекта
3
платформы: веб, мобильная, настольная
8
продуктовых модулей — от заявок до аналитики и зарплат
0
паролей — вход по одноразовому email-коду

Подход

  • Весь дизайн — в голове и в коде: от архитектуры данных до компонентов на Tailwind CSS
  • Итеративная разработка — каждая фича проектируется, реализуется и деплоится как самостоятельный шаг
  • Design tokens через CSS custom properties — единая тема для светлого и тёмного режима
  • Серверные функции с ServiceResult-паттерном, guard-обёртки для авторизации, Zod-валидация на всех маршрутах
  • Продукт в продакшене с первого месяца — живая обратная связь от реальных пользователей с первых недель

Пилот

Сейчас продуктом пользуются 2 зуботехнические лаборатории и 1 клиника в пилотном режиме. Это живая среда: реальные заказы, реальные платежи, реальная обратная связь.

Пользователи постоянно дают обратную связь — по удобству интерфейса, сценариям работы, нехватающим функциям. Каждая итерация продукта строится на этих данных: выявить проблему → спроектировать решение → реализовать → наблюдать.

Vasilii Tiasko
Напишите мне →
Напишите на vasiliitiasko@gmail.com — расскажу про архитектуру, решения и опыт пилотных пользователей
К резюме
Далее
Reviver RPLATE →