Вайбкодинг на практике - бесплатный курс. Урок 4. Улучшаем дизайн

UPD

К моему глубокому сожалению, администрация VC решила, что мой аккаунт "коммерческий"

Причина такая:

Вайбкодинг на практике - бесплатный курс. Урок 4. Улучшаем дизайн

Для аккаунтов с такой меткой, если я не буду платить по примерно 50к в месяц, выключается продвижение внутри площадки

Мотивация продолжать публиковать здесь бесплатный курс или делиться опытом я в себе не нахожу

Вероятнее всего, этот пост тоже на площадке продвигаться не будет.

Публиковать ссылки на тг-канал я не буду, а то вдруг я там случайно что-то продам и не поделюсь с Комитетом. Если кому-то интересен мой контент - он легко находится в поиске тг по имени

Спасибо всем)

P.s. вот еще оказывается как

Вайбкодинг на практике - бесплатный курс. Урок 4. Улучшаем дизайн

Что это за курс

Я решил на практике показать, как создать приложение с помощью вайбкодинга — от идеи до готового продукта. Это не строгий курс с пошаговой инструкцией «как надо». Мы пройдём весь живой процесс со всеми ошибками, сложностями и решениями. Весь курс будет опубликован здесь бесплатно, поэтому ставьте реакции на пост, задавайте вопросы в комментариях — так больше людей сможет увидеть курс.

Первую часть и описание идеи продукта можно найти здесь:

Где мы остановились

В прошлом уроке в прототипе впервые появилась возможность пройти весь путь от регистрации до утверждения и печати договора. Логику согласования мы описали в книге, и прототип теперь ей следует.

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

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

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

Это сделано для более комфортного восприятия читателем, в самой работе этот шаг избыточен.

Переименовываем файлы

Мой перфекционизм потребовал еще одной правки - мне не нравится что файлы документации называются транслитом: vid/nabor.html, vid/obrazec.html, statusy.html, kniga.mdc. Помимо эстетики есть проблема - по имени не всегда понятно, что внутри: obrazec — это прототип, а nabor — UX-кит. Делаю это первым шагом, чтобы следующие промпты уже работали с новыми именами.

Режим: Auto · Plan → выполни план.

Мне не нравится, что файлы в книге, прототипе и правилах названы транслитом: kniga.mdc, nabor.html, obrazec.html, statusy.html и так далее. Давай переименуем их в понятные английские названия и поправим все ссылки Снимки уроков в lessons не трогай После этого проверь в браузере, что книга и прототип открываются и все ссылки работают

Результат: агент переименовал файлы через git, поэтому история изменений сохранилась, и поправил ссылки во всех страницах книги и прототипа. Снимки уроков в lessons он не трогал, старых имён в книге и правилах не осталось.

  • правила: kniga.mdc → book.mdc, obyom-i-konveyer.mdc → scope-and-pipeline.mdc, yazyk-i-vid.mdc → language-and-ui.mdc
  • папка vid → ui, в ней nabor.html → kit.html и obrazec.html → prototype.html
  • statusy.html → statuses.html

После переименования агент сам открыл книгу и прототип в браузере и проверил, что все страницы и ссылки работают.

Вид пункта договора

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

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

Правка большая, поэтому режим: /prompt-master → Plan → выполни план.

/prompt-master Давай доработаем вид пункта договора в UX-ките. Сейчас непонятно, где правка, а где обсуждение: комментарий и редакция выглядят одинаково, у пункта 1.7.3 четыре одинаковые плашки подряд. Кнопки справа шумят, колонка с ними меняет ширину и текст прыгает Сначала поищи в интернете, как сейчас показывают правки и комментарии в сервисах согласования договоров, в Word и Google Docs. Что нашел - допиши в «План макета» Что хочу - Редакцию показываем целиком отдельным блоком под текстом пункта и подписываем, чья она. Комментарии - на полях справа, как в Word - Зачеркнутое и вписанное внутри текста не нужно - Новые редакции, которые я еще не открывал, должны быть заметны - У пункта виден статус. Цветом выделяем только то, где от меня что-то нужно, согласованный пункт - просто текст - Кнопки строкой под пунктом, главная - «Согласен». Колонка не должна менять ширину - Когда правлю пункт, в поле уже стоит текущий текст и рядом можно написать пояснение - Подписи сейчас мелкие и капслоком, сделай нормальными. Текст договора крупнее, номер пункта слева, как в обычном договоре - Подтверждения и ошибки сейчас всплывают системными окнами браузера, пусть будут частью интерфейса - Кнопки сложно отличить от полей и друг от друга - главная, обычная и опасная должны выглядеть по-разному Принципы вида из «Плана макета» перенеси в UX-кит, план со временем устареет Пока только UX-кит, прототип следующим шагом

Перед тем как собрать промпт, /prompt-master задал два вопроса: для какого инструмента готовим промпт и что именно дописывать в «План макета» — только найденные в интернете подходы или ещё и мои требования.

Второй вопрос оказался по делу. В промпте я прошу дописать ресёрч в «План макета» и в то же время вынести оттуда принципы вида. Без уточнения агент мог бы сложить туда и требования. Ответил так:

Cursor, агент в этом репозитории В «План макета» только то, что нашел в интернете: источники и выводы. Мои требования к виду пункта - в UX-кит, туда же переносим принципы вида из «Плана макета»

Результат: в «План макета» агент дописал только ресёрч — как правки и комментарии показывают Word и Google Docs. Вывод простой: почти везде правка и комментарий выглядят по-разному. Комментарий пусть будет на полях справа рядом с местом в тексте, а правка показывается отдельно, с автором и кнопками «принять» или «отклонить».

UX-кит пересобран. Номер пункта слева, редакция — отдельный блок под текстом с подписью, чья она, комментарии на полях справа, кнопки под пунктом. У каждого пункта виден статус: согласован, ждёт нас, ждёт другую сторону или спор. Непросмотренная редакция помечена «новое». Подтверждения и ошибки теперь часть интерфейса, а не окна браузера, а главная, обычная и опасная кнопки выглядят по-разному.

Вайбкодинг на практике - бесплатный курс. Урок 4. Улучшаем дизайн

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

Вайбкодинг на практике - бесплатный курс. Урок 4. Улучшаем дизайн

Экран согласования и контрагент

Дальше переносим новый вид пункта из UX-кита в прототип и переделываем экран согласования. На большом мониторе договор стоит узкой колонкой по центру, а по бокам пусто. При этом над договором три блока управления, и сам текст начинается только на втором экране.

Здесь же исправляем мелочь, которую нашли в прошлом уроке: после утверждения контрагенту пишется «доступна версия для печати», а кнопки печати у него нет.

Режим: Auto · Plan → выполни план.

После прошлого шага в прототипе пропали кнопки «Комментарий», «Редакция» и «Согласен» у пунктов - UX-кит и прототип используют общие стили. Начни с этого Перенеси новый вид пункта из UX-кита в прототип и давай переделаем экран согласования На большом мониторе договор стоит узкой колонкой, а по бокам пусто. Над договором три блока управления, и сам текст начинается только на втором экране. Я бы сделал так: - слева оглавление разделов, и видно, где спор или что-то ждет нас - в центре договор - справа ссылка для контрагента, наши реквизиты и обсуждение напротив пункта - сверху строка со статусом, сколько согласовано и сколько новых, переход к следующему открытому пункту и «Утвердить итог» На экране поменьше правая часть пусть прячется, а на телефоне оглавление уходит наверх списком Контрагент при первом входе видит служебную строку прототипа. Вместо нее нужно нормальное приветствие: кто прислал договор, что от него нужно и сколько пунктов ждут ответа. После первого действия оно скрывается. А если ссылку отключили - «Доступ закрыт, попросите новую ссылку у отправителя» В интерфейс попали слова из книги, давай заменим: - «Редакция своей стороны / контрагента» → «Вы предложили / Поставщик предлагает» - «Редакция» → «Предложить свою формулировку», «Комментарий» → «Ответить» - «Печать HTML» → «Версия для печати» - «Ссылка жива / отозвана» → «Ссылка активна / отключена» - «Снимок шаблона ... Договор одним потоком» → «Создан из шаблона ... 12 марта» - «Соглашение о молчании» → «Соглашение о неразглашении» Пометки «В книге еще открыто» пусть выглядят одинаково и включаются в плашке «Режим прототипа» После утверждения контрагенту пишется «Доступна версия для печати», а кнопки печати у него нет - добавь И обнови список экранов в книге

Перед тем как составить план, Cursor остановился и задал два вопроса. Трёхколоночного экрана в книге ещё нет, а от ответов зависит разметка:

  1. Где обсуждение пункта — в правой колонке напротив пункта, у самого пункта, как в UX-ките, или и там и там?
  2. Что писать вместо «Поставщик предлагает» — роль другой стороны в договоре, название организации или всегда «Поставщик»?

Это то самое правило из урока 3: нет факта в книге — вопрос и стоп. На первый вопрос ответ уже был в моём промпте: обсуждение справа, напротив пункта. На второй — в книге: ещё в прошлом уроке мы решили, что стороны подписываются «Вы» и названием другой стороны из реквизитов. «Поставщик» в промпте был просто примером.

Заодно агент уточнил, почему пропали кнопки: UX-кит перешёл на новую разметку кнопок у пункта, а прототип всё ещё рисует старую, и общие стили её прячут.

Ответил коротко:

1А 2Б

Результат: кнопки у пунктов вернулись — агент перевёл прототип на ту же разметку пункта, что и в UX-ките. Экран согласования теперь в три колонки: слева разделы с пометками «спор» и «ждёт нас», в центре договор, справа ссылка для контрагента, наши реквизиты и обсуждение выбранного пункта. Сверху строка со статусом, переходом к следующему открытому пункту и «Утвердить итог».

Вайбкодинг на практике - бесплатный курс. Урок 4. Улучшаем дизайн

Слова из книги в интерфейсе заменены: «Вы предложили», «Лазурный склад предлагает», «Ответить», «Предложить свою формулировку», «Создан из шаблона … 12 марта». Агент заодно записал все эти решения в книгу и обновил список экранов.

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

Вайбкодинг на практике - бесплатный курс. Урок 4. Улучшаем дизайн

Но появилась новая проблема. Пометки «В книге ещё открыто» агент собрал в плашку «Режим прототипа» и показал их все сразу, а плашка закреплена внизу экрана. На мониторе она занимает почти треть экрана, а на телефоне — почти весь. Я просил, чтобы пометки включались в этой плашке, а агент понял это как «показывать там всегда». Исправим в следующем шаге, вместе с телефоном.

Вайбкодинг на практике - бесплатный курс. Урок 4. Улучшаем дизайн

Телефон и печать

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

Режим: Auto · Plan → выполни план.

Плашка «Режим прототипа» разрослась и закрывает пол экрана, а на телефоне почти весь. Пусть по умолчанию она будет свернута в одну строку, а пометки «В книге еще открыто» открываются по кнопке Давай доделаем телефон и печать, сначала в UX-ките, потом в прототипе Контрагент скорее всего откроет ссылку с телефона прямо из мессенджера. Сейчас меню на телефоне занимает две строки, а до договора нужно пролистать реквизиты и блок ссылки. Хочу, чтобы первым был виден текст договора: - сверху одна строка с названием проекта, статусом и меню - снизу закрепленная полоса «9 / 14 · Следующий» - действия с пунктом открываются снизу в шторке, кнопки крупные, чтобы удобно нажимать пальцем Версия для печати сейчас - это тот же экран без кнопок. Нужен нормальный документ, который можно отдать на подпись: - A4, слева поле побольше под подшивку - только итоговый текст, номер пункта слева - пункты и подписи не разрываются между страницами - внизу номер договора, «итоговая редакция от ...» и номер страницы - подписи с линией, расшифровкой и «М.П.» - на экране одна кнопка «Распечатать или сохранить PDF» Проверь в браузере на ширине телефона и в предпросмотре печати

Результат: плашка «Режим прототипа» теперь по умолчанию в одну строку, а пометки «В книге ещё открыто» открываются по кнопке «Открытые вопросы».

На телефоне сверху одна строка — название проекта, статус и «Меню», первым виден текст договора, снизу закреплена полоса «9 / 14 · Следующий». Оглавление, ссылка и реквизиты уехали в меню. Действия с пунктом открываются снизу в шторке с крупными кнопками. Приветствие контрагента на телефоне стало компактной строкой с кнопкой «Скрыть» и не отодвигает договор вниз.

Договор на телефоне
Договор на телефоне
Шторка с действиями пункта
Шторка с действиями пункта
Так видит контрагент
Так видит контрагент

Версия для печати теперь отдельный документ: формат A4, только итоговый текст, номер пункта слева, подписи с линией, расшифровкой и «М.П.», внизу каждой страницы номер договора и «итоговая редакция от …». На экране одна кнопка «Распечатать или сохранить PDF».

Вайбкодинг на практике - бесплатный курс. Урок 4. Улучшаем дизайн

Нашлась одна мелочь: в колонтитуле на всех страницах написано «стр. 0» — номер страницы не считается. Поправим сразу, промпт простой:

В версии для печати в колонтитуле на всех страницах «стр. 0» - номер страницы не считается. Поправь и проверь в предпросмотре печати на договоре из двух страниц

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

Что ещё нашлось

Когда прошёл прототип ещё раз, нашёл две проблемы. На телефоне не видно сквозного меню — его закрывает панель с меню пунктов. А кнопки «Ответить» и «Предложить свою формулировку» у каждого пункта получились слишком большими и некрасивыми. Лучше сделать одну аккуратную кнопку «Не согласен», через которую можно и ответить, и предложить свою редакцию.

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

Материалы к уроку

Получившуюся книгу я скопировал в lessons/lesson-4/ и сделал коммит.

Что я понял в этом уроке

  • Общие файлы могут сломать то, что мы не трогали. Мы просили менять только UX-кит, а прототип поменялся через общие стили. После каждого шага стоит проверять не только то, что меняли.
  • Если в книге нет ответа, агент останавливается и задаёт вопрос. Часто ответ уже есть в книге или в промпте — достаточно на него указать.
  • Агент может понять формулировку по-своему: «пометки включаются в плашке» он прочитал как «показывать их там всегда». Чем конкретнее описано поведение, тем меньше переделок.
  • /prompt-master полезен не только оформлением: он задаёт уточняющие вопросы как раз там, где промпт можно понять двояко.

Заключение к уроку

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

Вопрос к вам: как вы сейчас согласовываете договоры — Word в режиме правок, протокол разногласий, переписка в мессенджере или что-то ещё? Ответьте одной строкой в комментариях.

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

Версия документации по результатам данного урока здесь:

Следующий урок:
Скоро