본문으로 건너뛰기
Works전기차 충전소 관리 시스템
Business Project (Freelancer)

전기차 충전소 관리 시스템

전기차 충전소 관리 화면과 API 연동·인증·테이블 상태 관리 개선

담당 역할
개발팀 합류·관리 화면 및 인증 개발
팀 구성
프론트엔드 3명 · 백엔드 3명
소속 · 의뢰
주식회사 아론
진행 기간
2025.06 ~ 2025.08
WebFrontend

보안상 화면과 내부 자료는 공개하지 않습니다.

작업 환경과 기여 범위

데모를 앞두고 기존 개발팀에 합류해 기획자·디자이너·백엔드 개발자와 전기차 충전소 관리 시스템을 개발했습니다. 미완성 페이지의 기능과 API 연동을 마무리해 데모 일정을 맞추는 데 기여했습니다. 기존 테이블·검색 필터 패턴에 맞춘 조회·등록·수정 화면과 인증 처리를 맡았습니다.

인증 갱신 처리와 테이블별 상태 분리

Refresh Token 기반 인증과 실패 요청 자동 재시도

문제

관리 시스템 특성상 한 화면에 오래 머물며 조회·등록·수정 작업을 이어가는 경우가 많아, Access Token 만료 시 작업 흐름이 끊기지 않도록 자연스러운 세션 연장과 보안 처리가 필요했습니다.

구현

보안을 위해 Access Token은 메모리에, Refresh Token은 HttpOnly Cookie에 분리 보관하고, 새로고침 시에는 Refresh Token으로 세션을 복원하도록 구성했습니다.

API 호출에서 401 응답이 발생하면 Refresh Token으로 Access Token을 자동 재발급받은 뒤, 실패했던 기존 API 요청을 자동으로 재실행하도록 연결했습니다.

재시도 횟수를 제한하고 Refresh 요청 전용 인터셉터를 분리해 토큰 갱신 중 무한 루프가 발생하지 않도록 방지했으며, Refresh Token까지 만료·무효화된 경우에는 즉시 로그아웃 처리했습니다.

결과

Access Token 만료 시 토큰 갱신과 실패 요청 재시도를 연결해, 작업 중 다시 로그인해야 하는 상황을 줄였습니다.

테이블별 상태 분리와 새로고침 후 정렬·페이지 유지

문제

여러 관리 화면의 테이블이 하나의 전역 상태를 공유하면 화면 간 정렬 기준과 페이지 번호가 서로 덮어써지고, 새로고침 시 탐색 위치가 초기화되는 불편이 있었습니다.

구현

공통 스토어 생성 함수를 두고 Zustand의 createStore로 테이블마다 독립된 상태 인스턴스를 생성했습니다.

persist 미들웨어로 상태를 sessionStorage에 저장하되 테이블 식별자를 저장 키에 포함해, 각 테이블의 정렬·페이지 상태를 독립된 키로 복원하도록 구성했습니다.

결과

여러 테이블이 공유하던 정렬·페이지 상태를 테이블별로 분리했습니다. 화면을 이동하거나 새로고침해도 해당 테이블의 상태를 복원하도록 했습니다.

맡은 작업

  • 기존 관리 화면의 패턴에 맞춰 잔여 페이지 UI와 조회·등록·수정 API 연동
  • Access Token(메모리)·Refresh Token(HttpOnly Cookie) 분리 보관, 401 응답 시 자동 토큰 갱신 및 실패 요청 재시도, 무한 루프 방지와 새로고침 세션 복원을 포함한 인증 프로세스 구현
  • Zustand createStore와 테이블 식별자 기반 sessionStorage persist로 테이블별 정렬·페이지 상태를 독립적으로 유지하도록 개선

사용 기술

언어·프레임워크

ReactTypeScript

상태·데이터

ZustandReact Hook FormZod

화면·인터랙션

Tailwind CSS