Wish it
Бесплатный сервис списков желаний. Желание добавляется по ссылке с любого сайта, список делится ссылкой или QR-кодом, а друзья бронируют подарок, чтобы не дарить одно и то же.
- Роль
- Продукт, дизайн, разработка
- Стек
- Nuxt 3 · Nitro · MySQL
- Срок
- 6 недель до продакшена
- Год
- 2025

Задача
Список желаний обычно живёт в заметках и переписке: ссылки теряются, а двое друзей приносят одно и то же. Нужен был сервис, куда желание попадает одной ссылкой с любого сайта, а друзья видят, что подарок уже забронирован.
Решение
Желание добавляется ссылкой: сервер сам вытягивает название, описание и картинку. Яндекс Маркет, Ozon, Wildberries и Золотое Яблоко не отдают пригодных тегов Open Graph, поэтому для каждого написан свой сценарий в headless-браузере.
Желания раскладываются по публичным и приватным спискам, список делится ссылкой или QR-кодом, друг бронирует подарок на 30 дней. Подборки «идеи подарков» копируются в один клик, бот @WishItRuBot принимает ссылку и создаёт черновик желания; интерфейс на двух языках, тёмная тема, блог, PWA — ставится на домашний экран.
Как шла работа
Сделал всё сам — продукт, интерфейс, фронтенд, бэкенд, база, DevOps: 251 из 252 коммитов мои. Репозиторий завёл в декабре 2024, основная разработка заняла 6 недель, с 7 мая по 19 июня 2025 — около 250 коммитов. На проде стоит именно эта версия.
На чём сделано
Nuxt 3 и Vue 3 с API на Nitro в одном SSR-приложении: 52 маршрута API и 15 таблиц в MySQL 8. Интерфейс на Nuxt UI 3 и Tailwind 4, состояние в Pinia, i18n и PWA. Доступ по JWT с ролями; вход по e-mail или телефону с подтверждением письмом (nodemailer) или SMS (SMS Aero), через Google OAuth и Telegram Login, внутри Telegram Mini App — автоматически; бот на node-telegram-bot-api. Ссылки разбирает Playwright с headless Chromium, ошибки ловит Sentry, тесты на Vitest и Playwright; Docker и GitLab CI выкатывают сборку на VPS за nginx.





