Back to the shelf
KJ VIDEONo. 003

Work · AccuHit AI Technology

AccuNix Social CRM Platform

An enterprise admin platform that brings LINE, Facebook and Instagram marketing and member data together, covering social operations, campaigns, member management and performance tracking for multiple business clients.

Type
Frontend
Role
Frontend Engineer
Period
Mar 2025 – Mar 2026
Released
Mar 1, 2025
  • Vue
  • TypeScript
  • Pinia
  • Element Plus
  • Vue I18n
  • Axios
  • Pusher
  • Tailwind CSS
  • SCSS

HighlightsFeatures

  • Multilingual architecture

    Maintained and improved the Chinese–English i18n architecture so dynamic content and UI components switch languages correctly.

  • Live campaign form preview

    Designed and built a live preview for campaign forms, cutting setup mistakes and back-and-forth.

  • Client-side caching and state

    Built caching and state management with Pinia to avoid duplicate API requests, with support for manual refresh.

  • Chat refactor

    Refactored the chat’s data structures and state flow after changes to staff roles and the API spec, keeping messages correctly linked to users and leaving room to grow.

  • Reusable custom components

    Wrapped and extended Element Plus components into reusable custom ones.

  • Stronger typing

    Steadily removed any from the codebase and enforced TypeScript types in all new features, improving maintainability and long-term stability.

Behind the ScenesChallenges

  1. Removing any without breaking features

    The problem

    The legacy code was full of any. It had to pass type checking without destabilizing existing features.

    The fix

    Started with small, fairly self-contained pages. After each fix I ran lint to confirm it passed and nothing else broke, then moved on to the next.

  2. Improving and extending existing components

    The problem

    Existing components needed improvements and new capabilities, but many pages relied on them, so nothing could break.

    The fix

    Constrained component interfaces with types and left existing behavior alone unless fixing a bug. Components hold no side effects. Anything that has to run before or after is handed to the parent through emit.

  3. Extending large features with no handover docs

    The problem

    Some features were large and hard to change, and no handover documentation had been left behind.

    The fix

    I first used AI to walk through the files and find the key parts, the problems and a place to start. New features were added without breaking existing code. For rewrites, I agreed on data formats with the backend or converted them into a frontend-friendly shape, keeping the changes as small as possible.

A Kay Jen production

Directed by KAY JEN

© 2026 Kay Jen