drinkIt.guru — pet-проект про коктейли
Однажды у нас с другом накопилась критическая масса алкоголя в доме. Мы устроили вечеринку и, как культурные люди, захотели красоты. Поэтому мы полезли в интернет искать, что такого интересного можно сделать из нашего бара. И... это было печально. Первый сайт, второй, третий. Сайты без картинок, со сложными каскадами комбобоксов и всплывающей рекламой. Конечно, были крупные базы рецептов коктейлей, но искать по ним было крайне неудобно, да и контент частенько бывал откровенно трешовым.
Шли дни, наш бар рос, мы стали такими себе барменами-любителями. Но искать рецепты коктейлей было всё также неудобно. И тут нам пришло в голову гениальное решение: написать собственный сервис для поиска коктейлей. С блэкджеком и куртизанками, конечно. То бишь, с хитрыми фильтрами и удобной сортировкой. Так на свет появился drinkIt.guru.
Реализация
Так удачно сложилось, что мой товарищ — Java-разработчик, а я, неловко признаться, Flash-разработчик. Поэтому, недолго думая, мы решили использовать именно эти технологии для бэкенда и фронтенда. И конечно, общаться они между собой должны были по REST. В качестве механизма аутентификации по концепции REST прекрасно подошла digest-аутентификация. Для хранения данных изначально использовалась MySQL. Позже она была заменена на MongoDB, потому что это модно и молодежно!
Для серверной части активно использовались Spring, SpringData, SpringSecurity. В какой-то момент нам захотелось попробовать Kotlin и сейчас большая часть кода бэкенда написана именно на нем.
Итак, мы собрались с силами и весьма неспешно написали первую версию. И тут я осознал некоторые проблемы. Во-первых, оказалось, что всё-таки дизайнер из меня никакой и при взгляде на мой сайт люди начинают плакать кровавыми слезами. Во-вторых, ресурс ожидаемо не работал на мобильных платформах. И в-третьих, flash не индексируется. В результате я сдался под напором критики и решил переписать весь клиент на JS, выбрав для этих целей EmberJS. Параллельно с этим я убедил знакомого дизайнера абсолютно безвозмездно рисовать мне эскизы страниц и думать над юзабилити сайта в целом.
Неожиданно для меня миграция клиента на новую технологию произошла быстро и гладко. EmberJS оказался достаточно простым, мощным и динамично развивающимся. Прямо сейчас заканчивается работа над новым движком рендеринга Glimmer 2, а еще написаны тысячи открытых аддонов для решения практически любой задачи. Немалую роль в облегчении миграции сыграло отзывчивое сообщество, которое терпеливо отвечало на все мои дурацкие вопросы.
Пару месяцев разработки — и мы наконец выложили наш проект в мир. Мы постарались реализовать в нем то, чего нам не хватало у других подобных ресурсов.
Различные фильтры для поиска
На сайте сейчас представлено всего три фильтра: тип коктейля, ингредиенты и специфические характеристики коктейля. Конечно, классификаций коктейлей придумано намного больше: по размеру, составу, цвету, сезону, родине коктейля... Мы выбрали самый простой подход, деление идет по размеру и крепости: лонги, шорты (короткие коктейли) и шоты. Лонги — это коктейли большого объема и невысокой крепости, шоты — наоборот, а шорты где-то посредине.
Второй фильтр отбирает коктейли по нескольким опциям, которые мы посчитали удобными и полезными. Сейчас их пять, но мы планируем добавлять еще.
Горящие, слоеные, со льдом — простые фильтры, суть которых понятна из названий. Под официальными мы подразумеваем коктейли из списка международной ассоциации барменов IBA. А проверенные — это те, которые мы сами готовили и пили. Последний фильтр отбирает коктейли, которые можно приготовить по описанному рецепту и которые не хочется сразу вылить в унитаз. По крайней мере, нам.
И последнее, но самое важное — фильтрация по ингредиентам. Она позволяет отобрать коктейли, которые пользователь может приготовить из выбранных ингредиентов (и те, на которые ему чего-то не хватает). Чем больше ингредиентов из фильтра в составе коктейля, тем выше он будет в результатах.
Мой бар
Мой бар нужен для хранения списка содержимого тумбочки с алкоголем (или стеллажа во всю стену — у кого как). По сути, это позволяет не выбирать ингредиенты заново при новом поиске коктейлей, а использовать весь перечень своего алкоголя «одним движением руки».
В моем баре можно отметить алкоголь, который закончился (ситуация: «сейчас выпил, но понравился и хочу купить еще»). Такие напитки не участвуют в поиске, но остаются в баре пользователя до полного удаления или восстановления.
Сейчас эта страница реализована... по-простому. Мы всё еще думаем над её красотой и удобством. Но, по крайней мере для нас как пользователей, мой бар вполне функционален.
Качественный контент
К сожалению, мы не раз сталкивались с рецептами коктейлей, которые невозможно приготовить. По законам физики. Обычно это слоенный коктейль, который просто не будет наслаиваться так, как предлагают авторы коктейля. Поэтому мы стараемся приготовить и сфотографировать каждый коктейль, который есть у нас на сайте.
Для фотографирования мы смастерили специальный лайтбокс и с каждой фотосессией апргрейдили его. Сейчас это чудище имеет своеобразный вид, но свои функции выполняет на 100%!
Будущее
Мы активно работаем над увеличением количества рецепта. Уже сейчас пользователям видно около сотни коктейлей, хотелось бы за пару месяцев сделать больше двухсот. Из фич в первую очередь мы хотим добавить отображение «залайканых» коктейлей в профиле и значительно улучшить мобильное отображение сайта. Ну и конечно исправление багов, которые то и дело возникают в разных частях проекта.
Изначально это был просто домашний проект для себя. Сейчас мы решили нести свет и добро в мир =). Всем хорошей пятницы!
43 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів