Wish it
A free wish-list service. A wish is added from a link on any site, the list is shared by link or QR code, and friends reserve a gift so nobody gives the same thing twice.
- Role
- Product, design, development
- Stack
- Nuxt 3 · Nitro · MySQL
- Timeline
- 6 weeks to production
- Year
- 2025

The task
A wish list usually lives in notes and chats: links get lost, and two friends turn up with the same present. The service had to take a wish from a single link on any site and show friends that a gift is already reserved.
The solution
A wish is added by link: the server pulls the title, description and image itself. Yandex Market, Ozon, Wildberries and Gold Apple return no usable Open Graph tags, so each gets its own script in a headless browser.
Wishes go into public and private lists, a list is shared by link or QR code, and a friend reserves a gift for 30 days. "Gift ideas" collections copy in one click, the @WishItRuBot bot takes a link and creates a draft wish; the interface comes in two languages, with a dark theme, a blog and a PWA that installs to the home screen.
How it went
I built everything myself — product, interface, frontend, backend, database, DevOps: 251 of 252 commits are mine. The repository dates from December 2024; the main development took 6 weeks, from 7 May to 19 June 2025 — around 250 commits. This is the version running in production.
Built with
Nuxt 3 and Vue 3 with a Nitro API in a single SSR application: 52 API routes and 15 tables in MySQL 8. The interface runs on Nuxt UI 3 and Tailwind 4, state in Pinia, i18n and PWA. Access by JWT with roles; sign-in by email or phone with confirmation by email (nodemailer) or SMS (SMS Aero), through Google OAuth and Telegram Login, and automatically inside the Telegram Mini App; the bot runs on node-telegram-bot-api. Links are parsed by Playwright with headless Chromium, errors go to Sentry, tests run on Vitest and Playwright; Docker and GitLab CI roll the build out to a VPS behind nginx.





