← All projects
PROJECT OVERVIEWWEB APPLICATION

Season — a summer promo: a Shadow DOM widget with an account and achievements

A campaign for buyers: register receipts, earn achievements — the first receipt, a week in a row, five receipts — and claim prizes for them, while weekly draws give a chance to win more. The promo page is made in Tilda; everything interactive is the app embedded into it.

Vue 3TypeScriptFrontendShadow DOM
Role
Frontend developer
Timeline
2026, June — August
Достижения участника и призы за них в личном кабинете

The challenge

Build the embeddable campaign app from scratch — sign-up and sign-in with phone confirmation, receipt registration, an account with achievements and prize claiming, a winners table — and embed it into a Tilda page without the styles clashing.

What the solution includes

  • Embedding with a single script: the loader takes the current files from version.json, mounts the app in Shadow DOM and moves to the page what does not work inside a shadow tree — @font-face, the rem base, CSS variables; CSS is split at build time with PostCSS, and the loader modules are covered by tests.
  • The winners table is a separate app in its own Shadow DOM, mounted into any #winners block on the page: filters by date and prize, a search by phone, cards on phones.
  • Sign-up and sign-in by phone: a confirmation code and, after a timer, confirmation by a call with the status polled every 3 seconds; password recovery.
  • Receipt registration: a QR code through the camera with a torch, QR recognition on an uploaded photo, manual entry; resubmitting a rejected receipt with corrected data.
  • The account: the receipt history with filters, prizes, achievements in a carousel draggable on phones and claiming prizes for achievements with delivery details.
  • Document links come from the API and are put into both the app and the Tilda page; feedback with subjects from the API.

A commercial team project: I built the whole frontend; the promo page is made in Tilda. Screenshots are from a local build with test data; the names of the brand and the company are hidden.

Next project Capsule — an online store of a supplement brand: storefront, checkout and accountONLINE STORE