Back to the shelf
KJ VIDEONo. 005

Work · AccuHit AI Technology

Campaign Page Platform

Consolidated several client campaign pages, each built with plain HTML and JS, into a single Vue and Vuetify app.

Type
Frontend
Role
Frontend Engineer
Period
Nov 2025 – Jan 2026
Released
Nov 1, 2025
  • Vue
  • TypeScript
  • Vuetify
  • Pinia
  • LINE LIFF

HighlightsFeatures

  • Path-based project routing

    Brought multiple campaign pages into one app, separated by path. Routing traffic only means handling the data each path needs, such as parameters passed in the URL.

  • Single source of truth for config

    Gathered each project’s UI and settings into a single source, with types derived from the config itself, cutting down on mistakes and maintenance.

  • Type-checked config map

    Replaced switch statements scattered across the code with a single map. Leaving out a setting for a new option fails the type check, and unknown values fall back to a default.

  • Consistent UI

    Unified the interface of every campaign page with Vuetify, replacing ad hoc styles.

  • LINE login and error handling

    Integrated LINE login through LIFF and handled loading and expired sessions in one place.

Behind the ScenesChallenges

  1. Every campaign page did its own thing

    The problem

    Each campaign page was built separately with HTML and JS, and the UI didn’t match. The same kinds of settings lived in many places, so rules drifted apart and one change meant edits in several files.

    The fix

    Merged everything into a single Vue app, separated by path. Settings became a single source of truth constrained by TypeScript, so missing or wrong values show up in the type check.

A Kay Jen production

Directed by KAY JEN

© 2026 Kay Jen