← 포트폴리오 목록

의료진 콘텐츠 통합 관리 허브

포트폴리오 1의 회원제 콘텐츠 포털을 확장하여, 회원 승인·콘텐츠 통합 관리·조회 통계를 비대칭 타일 그리드로 통합한 관리자 콘솔을 설계·구현합니다.

회원 승인 상태 머신 및 이력 관리 구현대기·승인·반려·정지 4단계 상태 전이를 트랜잭션으로 처리하는 상태 머신 구현, 변경 이력 감사 테이블 설계
콘텐츠 조회 통계 집계 파이프라인 설계PostgreSQL Materialized View 4개로 일별·주별 조회·다운로드 지표 집계, Redis 캐시로 대시보드 응답 계층 구현
비대칭 타일 대시보드 컴포넌트 체계 구축Bento 그리드 기반 크기 가변 타일 컴포넌트 8종 설계, 위젯별 독립 데이터 페칭과 스켈레톤 로딩 적용
서비스 타입Web
업종헬스케어
기술 스택
React 18TypeScriptTailwind CSSNode.jsExpressPostgreSQLPrismaRedisAWS S3
주요 기능
  • 통합 관리자 홈 대시보드
  • 회원 관리
  • 콘텐츠 관리
  • 콘텐츠 통계
Overview

프로젝트 개요

범위: 개발, 디자인, 기획

포트폴리오 1의 회원제 콘텐츠 포털을 확장하여, 회원 승인·콘텐츠 통합 관리·조회 통계를 비대칭 타일 그리드로 통합한 관리자 콘솔을 설계·구현합니다. Redis 캐시와 AWS S3 확장 인프라를 결합해 콘텐츠가 계속 누적되어도 관리 화면의 응답성을 유지하는 구조를 구현합니다.

작업 범위

  • 통합 관리자 홈 대시보드: 회원·콘텐츠·통계 현황을 비대칭 타일로 한눈에 보여주는 관리자 홈 화면입니다
  • 회원 관리: 가입 신청 회원의 인증 상태를 조회하고 승인·반려·정지를 처리하는 화면입니다
  • 콘텐츠 관리: 영상·자료·공지·세미나 일정 콘텐츠를 한 화면에서 업로드하고 관리하는 기능입니다
  • 콘텐츠 통계: 콘텐츠별 조회·다운로드 추이를 차트로 확인하는 통계 화면입니다

주요 업무

  • 통합 관리자 홈 대시보드 화면: Bento 그리드 기반 타일 컴포넌트로 KPI, 최근 활동, 퀵 액션을 배치하는 대시보드 구조를 구현합니다
  • 회원 관리 화면: 대기·승인·반려·정지 상태 전이를 트랜잭션으로 처리하는 상태 머신과 변경 이력 테이블을 구현합니다
  • 콘텐츠 관리 화면: 콘텐츠 유형별 CRUD API를 통합하고, Redis 캐시로 목록 조회 응답 계층을 구현합니다
  • 콘텐츠 통계 화면: PostgreSQL Materialized View로 일별·주별 지표를 집계하고 Recharts로 시각화하는 구조를 구현합니다
의료진 콘텐츠 통합 관리 허브
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

회원 승인 대기열이 늘어날 때 관리자 검토 우선순위를 정렬하는 큐 설계가 필요합니다

콘텐츠 조회·다운로드 로그가 누적될수록 통계 집계 쿼리 성능이 저하되지 않

Materialized View 갱신 전략 설계가 필요합니다

비대칭 타일 대시보드에서 위젯별 데이터 갱신 주기가 달라도 레이아웃이 흔들리지 않는 반응형 그리드 설계가 필요합니다

자료 파일을 S3로 이전하는 과정에서 기존 접근 권한 체계가 끊기지 않

무중단 마이그레이션 절차 설계가 필요합니다

구현 내용

핵심 기능 상세

핵심 기능 1

통합 관리자 홈 대시보드

회원·콘텐츠·통계 현황을 비대칭 타일로 한눈에 보여주는 관리자 홈 화면입니다. Bento 그리드 기반 타일 컴포넌트로 KPI, 최근 활동, 퀵 액션을 배치하는 대시보드 구조를 구현합니다.

  • CSS Grid의 grid-template-areas로 비대칭 크기 타일 레이아웃 구현
  • 위젯별 독립 데이터 페칭 훅으로 타일 단위 로딩/에러 상태 분리
  • React Query로 대시보드 요약 데이터를 캐싱하고 백그라운드 리페치 적용

위젯 단위로 데이터 페칭과 로딩 상태를 분리한 비대칭 타일 대시보드를 구현하여 일부 위젯 지연이 전체 화면에 영향을 주지 않는 구조를 설계합니다.

통합 관리자 홈 대시보드
통합 관리자 홈 대시보드 실제 화면
핵심 기능 2

회원 관리

가입 신청 회원의 인증 상태를 조회하고 승인·반려·정지를 처리하는 화면입니다. 대기·승인·반려·정지 상태 전이를 트랜잭션으로 처리하는 상태 머신과 변경 이력 테이블을 구현합니다.

  • 다중 선택 후 일괄 승인/반려 시 트랜잭션으로 원자적 처리하는 로직 구현
  • 상태 변경 이력을 별도 감사 테이블에 기록하는 audit log 패턴 적용
  • 자동 검증 실패 건을 사유별로 자동 분류해 재심사 큐에 노출하는 구조 설계

회원 상태 전이를 상태 머신으로 모델링하고 변경 이력을 감사 테이블에 기록하여 승인 처리 과정을 추적 가능한 구조로 구현합니다.

회원 관리
회원 관리 실제 화면
핵심 기능 3

콘텐츠 관리

영상·자료·공지·세미나 일정 콘텐츠를 한 화면에서 업로드하고 관리하는 기능입니다. 콘텐츠 유형별 CRUD API를 통합하고, Redis 캐시로 목록 조회 응답 계층을 구현합니다.

  • 콘텐츠 유형(영상/자료/공지/세미나) 공통 CRUD 인터페이스로 관리 화면 통합
  • Redis 캐시 계층으로 콘텐츠 목록 조회 응답을 캐싱하고 변경 시 무효화
  • 드래그 앤 드롭 파일 업로드 컴포넌트와 업로드 진행률 표시 구현

콘텐츠 유형이 달라도 동일한 CRUD 인터페이스로 관리할 수 있도록 추상화하여 신규 콘텐츠 유형 추가 시 관리 화면 재작성 없이 확장 가능한 구조를 설계합니다.

콘텐츠 관리
콘텐츠 관리 실제 화면
핵심 기능 4

콘텐츠 통계

콘텐츠별 조회·다운로드 추이를 차트로 확인하는 통계 화면입니다. PostgreSQL Materialized View로 일별·주별 지표를 집계하고 Recharts로 시각화하는 구조를 구현합니다.

  • PostgreSQL Materialized View 4개로 일별·주별 조회·다운로드 지표 집계
  • Recharts 기반 라인·바 차트 조합으로 콘텐츠별 추이 시각화 구현
  • 기간 필터와 콘텐츠 유형 필터를 조합한 통계 쿼리 파라미터 설계

Materialized View 기반 집계 파이프라인과 Redis 캐시를 결합하여 통계 화면 조회 시 원본 로그 테이블을 매번 스캔하지 않는 구조를 구현합니다.

콘텐츠 통계
콘텐츠 통계 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

관리자 콘솔 정보구조 재설계 · 2026.09

회원·콘텐츠·통계 도메인을 통합하는 관리자 콘솔 정보구조 재설계, 역할별 대시보드 위젯 정의

STEP 2

회원 관리 및 승인 워크플로우 확장 · 2026.09

면허번호 검증 큐, 승인·반려 상태 머신 API 구현, 회원 상태 변경 이력 테이블 설계

STEP 3

콘텐츠 통합 CRUD 및 캐시 계층 구축 · 2026.09

영상·자료·공지·세미나 콘텐츠 CRUD API 통합, Redis 캐시로 목록 조회 계층 구현

STEP 4

통계 집계 파이프라인 및 대시보드 개발 · 2026.09

콘텐츠 조회·다운로드 로그 집계 배치, Recharts 기반 비대칭 타일 대시보드 위젯 구현

STEP 5

파일 스토리지 이전 및 통합 테스트 · 2026.09

자료실 파일을 AWS S3로 이전, 서명 URL 기반 다운로드 권한 검증 테스트 작성

프로젝트 성과

주요 성과

회원 승인 상태 머신 및 이력 관리 구현대기·승인·반려·정지 4단계 상태 전이를 트랜잭션으로 처리하는 상태 머신 구현, 변경 이력 감사 테이블 설계
콘텐츠 조회 통계 집계 파이프라인 설계PostgreSQL Materialized View 4개로 일별·주별 조회·다운로드 지표 집계, Redis 캐시로 대시보드 응답 계층 구현
비대칭 타일 대시보드 컴포넌트 체계 구축Bento 그리드 기반 크기 가변 타일 컴포넌트 8종 설계, 위젯별 독립 데이터 페칭과 스켈레톤 로딩 적용
자료 파일 서명 URL 다운로드 구조 구현AWS S3 사전 서명 URL 발급 API 구현, 만료 시간과 권한 등급을 조합한 다운로드 제어 로직 설계
Highlights

기술적 주안점

  • 위젯 단위로 데이터 페칭과 로딩 상태를 분리한 비대칭 타일 대시보드를 구현하여 일부 위젯 지연이 전체 화면에 영향을 주지 않는 구조를 설계합니다
  • 회원 상태 전이를 상태 머신으로 모델링하고 변경 이력을 감사 테이블에 기록하여 승인 처리 과정을 추적 가능한 구조로 구현합니다
  • 콘텐츠 유형이 달라도 동일한 CRUD 인터페이스로 관리할 수 있도록 추상화하여 신규 콘텐츠 유형 추가 시 관리 화면 재작성 없이 확장 가능한 구조를 설계합니다

유사한 프로젝트를 기획하고 계신가요?

FIRSTPIP이 개발 범위와 로드맵을 함께 정리해드립니다

무료 상담 시작하기