Tea Taste: как превратить дегустацию чая в воспроизводимые данные
Разбор идеи и функций Tea Taste — веб-приложения, которое фиксирует параметры заваривания и сенсорные впечатления по проливам и превращает субъективную оценку чая в структурированную запись.
Дегустация чая обычно остаётся в памяти и нескольких разрозненных заметках: вода, температура, время пролива, ощущения. Такую информацию трудно сравнивать между собой и почти невозможно воспроизвести. Tea Taste решает именно эту задачу — переводит субъективную оценку чая в структурированную запись, которую можно сопоставлять с другими и повторять.
Идея
В основе проекта лежит простое наблюдение: впечатление от чашки чая складывается из двух разных по природе частей. Первая — объективные параметры заваривания: сорт, навеска, вода, температура, посуда, способ. Вторая — субъективные сенсорные ощущения: аромат и вкус, которые к тому же меняются от пролива к проливу.
Приложение намеренно разделяет эти две части. Объективные параметры задаются один раз для всей дегустации, а сенсорная оценка ведётся отдельно по каждому проливу. Благодаря этому одну и ту же заварку можно описать честно: не «чай вкусный», а «третий пролив на воде 90 °C дал более плотный аромат, чем первый».
Модель данных
Запись о дегустации состоит из нескольких связанных сущностей, объединённых идентификатором сессии (sessionId):
- Чай (
teaform) — параметры заваривания: название, страна, магазин, тип, навеска, бренд и объём воды, температура, цена за грамм, способ заваривания, посуда, флаг публикации и средняя оценка. - Пролив (
brewing) — отдельная заварка в рамках сессии: текстовое описание, время и оценка пролива, порядковый номер (brewingCount). - Аромат (
aroma) и вкус (taste) — фиксируются по стадиям (stage1,stage2,stage3), что отражает развитие букета в пределах одного пролива.
Такая структура позволяет хранить не одно усреднённое впечатление, а полную картину: как чай раскрывается по ходу нескольких проливов.
Функции приложения
Многошаговая форма. Ввод разделён на два этапа: сначала параметры чая и заваривания, затем сенсорная оценка. Черновик сохраняется в localStorage, поэтому случайное закрытие вкладки не теряет введённые данные.
Справочники с автодополнением. Поля названия, страны, магазина, воды, посуды и способа заваривания опираются на подготовленные списки — от китайских сортов (Лунцзин, Те Гуаньинь, Да Хун Пао) до розничных марок и брендов воды. Это ускоряет ввод и удерживает названия в едином виде, что важно для последующего сравнения.
Оценка по проливам. У каждого пролива своя оценка по шкале до десяти, выставляемая кастомными иконками-пиалами, и собственное описание. Из оценок проливов складывается средняя оценка чая.
Встроенный таймер. Для выдержки пролива предусмотрен таймер со звуковым сигналом — мелкая, но практичная деталь: руки заняты чайником, а не секундомером.
Публичная лента. Дегустацию можно отметить как публичную и опубликовать. На стороне API публичные и приватные данные разведены по отдельным маршрутам.
Архитектура
Проект разделён на фронтенд и бэкенд.
- Фронтенд — одностраничное приложение на React (Create React App) и Material UI. Формы построены на
react-hook-form, маршрутизация — наreact-router, защищённые разделы доступны только после входа. - Бэкенд — REST API на Node.js и Express с хранением данных в MongoDB через Mongoose. Аутентификация реализована на JWT с хешированием паролей (
bcryptjs), входные данные проверяются черезcelebrate, а базовая защита обеспечиваетсяhelmet, ограничением частоты запросов и настройкой CORS.
Оба сервиса упакованы в Docker, что делает запуск окружения воспроизводимым.
Что дальше
Ключевая ценность Tea Taste — не отдельная запись, а накопленный массив сопоставимых дегустаций. На его основе логично развивать сравнение завариваний одного сорта, аналитику по параметрам воды и температуры и рекомендации по способу заваривания. Текущая версия закладывает для этого структуру данных.
- Репозиторий (фронтенд): github.com/nikita-konkin/tea-taste-frontend
- Репозиторий (API): github.com/nikita-konkin/tea-taste-api
Теги
Другие обновления по проекту
Tea Taste: восемь скрытых отказов бэкенда, которые нашло код-ревью
Разбор восьми стабильностных дефектов в API Tea Taste, найденных при код-ревью после июльского релиза: двойной HTTP-сервер, ошибки, которые молча проваливались мимо обработчиков...
Tea Taste: вход через VK, публичная лента и админ-панель — большое обновление
Разбор крупного обновления Tea Taste (teaform.ru): авторизация через VK ID, редактирование дегустаций, восстановление пароля, публичная лента с профилями авторов, обратная связь...