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
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.