Commerce Platform 신세계프라퍼티
Starfield Mall
모바일 서비스 운영·리뉴얼·신규 구축
쇼핑, 혜택, 이벤트 등을 하나의 경험으로 연결한 통합 웹/앱 서비스
- 기간
- 2020.05–2021.06 · 2022.08–현재
- 역할
- Frontend Developer · 운영 및 신규 구축

At a glance
30초 안에 보는 프로젝트
복잡한 매장·이벤트·혜택 데이터를 일관된 사용자 경험으로 제공하기 위한 프론트엔드 시스템을 설계하고 구현했습니다.
- 클라이언트
- 신세계프라퍼티
- 기간
- 2020.05–2021.06 · 2022.08–현재
- 담당
- Frontend Developer · 운영 및 신규 구축
- 기술
- Vue 3, Pinia, TypeScript
Problem
해결해야 했던 문제
인수인계가 제한된 Vue 기반 모바일 서비스를 분석해 운영 안정성을 확보하면서 신규 기능과 지점 확장을 이어가야 했습니다.
Ownership
내가 맡은 범위
기존 코드·데이터 흐름 분석, 로그인 기능 개선, 월 단위 이벤트, 스타필드 키즈 고도화, UI 수정과 운영 오류 대응을 맡았습니다.
Outcome
만들어 낸 결과
전 지점 모바일 서비스 운영과 안성점·센터필드 구축을 지원했고, 이후 리뉴얼·애비뉴·빌리지 신규 서비스 구축까지 경험을 확장했습니다.
01 · Problem
문제와 프로젝트 제약
인수인계가 제한된 Vue 기반 모바일 서비스를 분석해 운영 안정성을 확보하면서 신규 기능과 지점 확장을 이어가야 했습니다.
vue2 레거시로 되어있던 프로젝트를 vue3로 마이그레이션하며, 프론트엔드 아키텍처를 전면 재설계하여 유지보수성과 확장성을 대폭 향상시켰습니다.
매장·이벤트·멤버십·혜택을 유기적으로 연결해 사용자에게 일관되고 직관적인 경험을 제공합니다.
02 · Ownership
역할과 책임 범위
기존 코드·데이터 흐름 분석, 로그인 기능 개선, 월 단위 이벤트, 스타필드 키즈 고도화, UI 수정과 운영 오류 대응을 맡았습니다.
Frontend Developer · 운영 및 신규 구축
- 전 지점 모바일 웹·앱 운영 및 UI·오류 대응
- 로그인 기능 개선·월 단위 이벤트·스타필드 키즈 고도화
- 안성점·센터필드 및 리뉴얼·애비뉴·빌리지 신규 구축 지원
03 · Decisions
기술적 판단과 트레이드오프
기존 구조에 미치는 영향을 먼저 확인하고 기능 단위로 점진적으로 반영해 장기 운영과 신규 구축을 병행했습니다.
Vuex → Pinia 마이그레이션 전략
옵션 API 기반 Vuex 모듈을 setup 스타일 Pinia 스토어로 점진 전환. Composition API와 잘 맞고 보일러플레이트를 줄여 신규 화면 작성 속도를 높임.
Mixin → Composable 전환
Options API mixin으로 흩어져 있던 공통 로직을 Vue 3 Composition API 기반 컴포저블(use*)로 재정리. 의존성·반환값을 호출부에서 명시적으로 추적할 수 있어 데이터 흐름이 분명해지고, mixin의 모호한 this 컨텍스트에서 발생하던 TypeScript 추론·키 충돌 문제를 제거. 필요한 함수만 import하는 구조라 번들 영향도 최소화.
Axios 인터셉터 표준화
토큰 갱신·에러 핸들링·재시도 로직을 인터셉터로 공통화. 화면 코드에서 분기 부담을 줄이고 API 흐름의 일관성을 확보.
낙관적 업데이트 패턴 도입
즐겨찾기처럼 빈번한 토글 동작에 UI를 먼저 갱신하고 실패 시 이전 상태로 롤백. 체감 반응성과 운영 안정성을 함께 확보.
04 · Evidence
구현 범위와 코드 근거
화면 구현에 그치지 않고 상태, 데이터 흐름, 재사용 경계를 함께 설계했습니다.
구현한 작업
- 정보 설계(IA) 및 사용자 여정 기반 페이지 구조 정의
- 재사용 가능한 컴포넌트·디자인 토큰 시스템 구축
- 코드 스플리팅·lazy loading·build 최적화로 렌더링·로딩 속도 개선
- 다양한 서비스(매장·이벤트·멤버십)를 단일 경험으로 통합
- 모션과 인터랙션을 활용한 브랜드 아이덴티티 강화
// stores/useFavoritesStore.ts — Vuex→Pinia 마이그레이션
import { defineStore } from "pinia";
import { ref, computed } from "vue";
import { favoriteApi } from "@/api/favorite";
export const useFavoritesStore = defineStore("favorites", () => {
const ids = ref<Set<string>>(new Set());
const count = computed(() => ids.value.size);
const isFavorite = (id: string) => ids.value.has(id);
// 낙관적 업데이트: UI를 먼저 바꾸고 실패 시 롤백
async function toggle(id: string) {
const prev = new Set(ids.value);
if (ids.value.has(id)) ids.value.delete(id);
else ids.value.add(id);
try {
await favoriteApi.sync([...ids.value]);
} catch {
ids.value = prev;
}
}
return { ids, count, isFavorite, toggle };
});포트폴리오 설명을 위해 NDA 범위 안에서 재구성한 코드 예시입니다. 실제 저장소 원문이나 고객사 기밀 정보는 포함하지 않았습니다.
05 · Outcome
결과와 확인 가능한 근거
전 지점 모바일 서비스 운영과 안성점·센터필드 구축을 지원했고, 이후 리뉴얼·애비뉴·빌리지 신규 서비스 구축까지 경험을 확장했습니다.
- 전 지점 모바일 웹·앱 장기 운영
- 로그인·월 단위 이벤트·신규 지점 구축
- Vue 기반 운영과 신규 구축
- 브랜드 경험 몰입감 향상
- 관리자 콘텐츠 운영 효율 개선
- 전 매장 통합 단일 코드베이스 운영
06 · Screens
주요 화면
각 화면을 선택하면 구현 결과를 더 크게 확인할 수 있습니다.
07 · Workflow
협업 흐름
요구사항을 구현 가능한 단위로 바꾸고, 운영 피드백까지 연결한 협업 과정입니다.
요구사항 접수
고객사로부터 업무를 인입받아 기획자가 디자이너와 협의해 화면·기능 초안을 작성합니다.
Figma 핸드오프
기획·디자인 결과물을 컴포넌트 단위 구조로 분해하고 공통 컴포넌트와 페이지 전용을 구분해 구현 가능한 형태로 재해석합니다.
화면 구현 (단독)
화면 전반을 단독으로 구현. 공통 컴포넌트 설계, 상태 관리 구조 결정, 라우팅·인터랙션 처리까지 책임.
API 연동
백엔드 개발자가 작성한 API 스펙을 인터셉터·에러 핸들링·로딩 상태와 함께 연결합니다.
운영·피드백 반영
QA·운영 단계의 이슈를 분석하고 화면·구조 개선안을 제안·반영합니다.