VISION+ Euro Raffle — Package Launch Campaign Page
Nuxt.jsVue 3Tailwind CSSDaisyUILanding PageCampaign

VISION+ Euro Raffle — Package Launch Campaign Page

Campaign landing page built from scratch during my time at VISION+, promoting a new subscription package created through a collaboration between VISION+ and Euro Stream. Built on Nuxt.js and Vue 3 with DaisyUI and Tailwind for fast styling and Pinia for package selection state, delivered against a fixed campaign launch date.

Tech used

Nuxt.jsVue 3PiniaTailwind CSSDaisyUI

Situation

VISION+ launch a new joint subscription package. A campaign needs a destination — a page that explains the package, shows what it includes, and converts visitors into subscribers — and it needs to exist before the campaign goes live, not after. The page had a hard launch date tied to the promotion, and nothing existed yet.

Task

Build the promotional campaign page from scratch as a side track alongside my main VISION+ work: present the joint VISION+ and Euro Stream package clearly, carry both brands without either being diluted, drive visitors into subscription, and ship responsive and complete before the campaign window opened.

Action

Build the promotional campaign page from scratch as a side track alongside my main VISION+ work: present the joint VISION+ and Euro Stream package clearly, carry both brands without either being diluted, drive visitors into subscription, and ship responsive and complete before the campaign window opened.

Result

Shipped ahead of the campaign launch window, giving the VISION+ and Euro Stream promotion a working destination on day one. The DaisyUI plus Tailwind approach kept build time short enough to absorb design changes late in the schedule without slipping the date. Page has since been retired — the campaign link expired at the end of the promotion.

Overview

VISION+ partnered with Euro Stream on a new joint subscription package. I built the promotional campaign page for it from scratch — a side track alongside my main work on the VISION+ web platform.

Stack: Nuxt.js, Vue 3, Pinia, Tailwind CSS, DaisyUI.

Campaign Constraints

A campaign page is a different problem from a product app. It has one job, a short life, and a date it cannot miss.

The date drives every technical decision. Marketing schedules don't move because a component library was the wrong pick, so the stack had to favor speed of assembly over long-term architectural elegance.

Why DaisyUI

I built on DaisyUI over Tailwind CSS for exactly that reason. A landing page is mostly standard furniture — hero, feature grid, plan comparison, CTA blocks — and DaisyUI supplies those as component classes rather than requiring them to be assembled utility by utility.

Where the design diverged from the defaults, Tailwind utilities took over. Fast where it could be fast, precise where it had to be.

Two Brands, One Page

The package was a collaboration, so the page had to carry both VISION+ and Euro Stream without either reading as a subordinate. That meant deliberate visual hierarchy in the package presentation — what each partner brings, presented as one combined offer rather than two stacked ones.

Conversion Path

The page is structured as a single path, not a brochure:

  1. Package proposition — what the collaboration gives you
  2. What's included, from each side
  3. Plan comparison
  4. Subscribe

Pinia holds the package and plan selection so a visitor's choice carries through the flow instead of resetting when they scroll or navigate between sections. Small detail, but a plan picker that forgets your selection at checkout is the fastest way to lose a conversion.

Mobile First

Campaign traffic arrives overwhelmingly from mobile — social, messaging, ads. The layout was built responsive from the start across mobile, tablet, and desktop, with mobile treated as the primary case rather than the narrow-viewport fallback.

Outcome

Shipped ahead of the campaign window. The page has since been retired — the link expired when the promotion ended.

Stack

Nuxt.js · Vue 3 · Pinia · Tailwind CSS · DaisyUI