← 포트폴리오 목록

인프라 점검 데이터 업로드 플랫폼

건설·시설물 안전진단 업체가 점검 데이터를 업로드하면 관리자가 처리 결과를 반영하는 B2B SaaS의 맞춤 구현한 프로젝트입니다.

S3 멀티파트 이어올리기 업로드 구현presigned URL 기반 분할 업로드와 중단 지점 재개 로직을 설계해 대용량 점군·이미지 파일 전송을 안정화합니다.
7단계 위저드 상태 관리 설계단일 폼 스토어로 7단계 입력값을 관리하고 단계별 파일 형식·수량 검증 로직을 구현해 제출 전 오류를 사전 차단합니다.
결과 HTML 샌드박스 격리 렌더링 구현iframe sandbox와 blob URL을 조합해 외부 분석 프로그램이 생성한 결과 HTML을 안전하게 격리 표시하는 구조를 설계합니다.
서비스 타입Web
업종데이터 분석
기술 스택
React + TypeScriptTailwind CSSNode.js + ExpressPostgreSQL + Prisma이메일 회원가입·로그인 (JWT)S3 호환 오브젝트 스토리지 저장 (Presigned URL)내부 API 구조 (관리자·서버 동일 API 경유)결과 HTML sandboxed 격리 표시 (iframe)
주요 기능
  • 점검 현황 대시보드
  • 점검 데이터 업로드 위저드
  • 점검 결과 확인 및 다운로드
  • 이용 권한 안내 및 구매 문의
Overview

프로젝트 개요

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

건설·시설물 안전진단 업체가 점검 데이터를 업로드하면 관리자가 처리 결과를 반영하는 B2B SaaS의 맞춤 구현한 프로젝트입니다. 인프라 점검 현장에서 발생하는 LiDAR 점군·궤적·RGB/Depth 이미지·캘리브레이션 자료를 7단계 위저드로 업로드하고, 상태별 현황 대시보드와 결과 HTML 격리 확인 화면을 React + Node.js 기반으로 구현합니다.

작업 범위

  • 점검 현황 대시보드: 로그인한 사용자가 자신이 업로드한 점검 건을 접수완료·분석중·분석완료·보완요청 상태별로 한눈에 확인할 수 있는 현황 대시보드입니다. 다건의 점검을 동시에 관리하는 안전진단 현장의 업무 흐름을 반영합니다
  • 점검 데이터 업로드 위저드: 구조물명·유형·점검일 등 기본 정보 입력부터 LiDAR 점군(.pcd), 위치 궤적(.txt), RGB·Depth 이미지, 캘리브레이션(json) 업로드, 최종 확인까지 7단계로 나눈 업로드 위저드를 구현합니다. 대용량 파일을 분할 업로드하고 중단 시 이어올리기를 지원합니다
  • 점검 결과 확인 및 다운로드: 관리자가 업로드한 3D 외관조사망도 결과 HTML(약 3MB, 외부 분석 프로그램의 산출물)을 사용자가 웹 화면에서 안전하게 확인하고 다운로드할 수 있도록 sandboxed iframe으로 격리 표시합니다. 본인이 업로드한 결과만 조회할 수 있도록 접근을 제한합니다
  • 이용 권한 안내 및 구매 문의: 이용 권한이 부여된 계정만 점검 업로드·결과 확인 기능이 활성화되고, 권한이 없는 계정은 자동으로 구매 문의 안내 화면으로 분기됩니다

주요 업무

  • 점검 현황 대시보드 화면: 상태별 카운트 배지, 최근 업로드순 정렬, 클릭 시 상세 패널로 전환되는 마스터-디테일 구조로 구현합니다
  • 점검 데이터 업로드 위저드 화면: S3 호환 오브젝트 스토리지에 presigned URL 기반 멀티파트 업로드를 적용하고, 확장자·RGB-Depth 장수 일치 등 필수 항목을 단계별로 검증하며 진행률을 표시합니다
  • 점검 결과 확인 및 다운로드 화면: iframe sandbox 속성과 blob URL로 외부 HTML을 격리 렌더링하고, 결과 파일 다운로드와 점검 메타데이터를 함께 제공합니다
  • 이용 권한 안내 및 구매 문의 화면: 계정별 권한 플래그를 기준으로 라우트 가드를 적용하고, 미부여 계정에는 문의 폼을 노출합니다
인프라 점검 데이터 업로드 플랫폼
요구사항 정의

프로젝트 핵심 과제

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

대용량 점군(.pcd)·궤적(.txt)·RGB/Depth 이미지 업로드의 네트워크 중단 대응을 위한 분할·이어올리기 아키텍처 설계

RGB 이미지와 Depth 이미지 장수·파일명 타임스탬프 불일치를 사전에 걸러내는 다단계 검증 로직 설계

외부 분석 프로그램이 생성한 결과 HTML(3D 뷰어 내장 단일 파일)을 서비스 내부 스크립트와 충돌 없이 격리 렌더링하는 sandbox 정책 설계

이용 권한 미부여 계정의 기능 노출을 라우트·API·UI 3단계에서 일관되게 차단하는 접근 제어 체계 설계

구현 내용

핵심 기능 상세

핵심 기능 1

점검 현황 대시보드

로그인한 사용자가 자신이 업로드한 점검 건을 접수완료·분석중·분석완료·보완요청 상태별로 한눈에 확인할 수 있는 현황 대시보드입니다. 다건의 점검을 동시에 관리하는 안전진단 현장의 업무 흐름을 반영합니다.

  • React Query로 점검 목록 상태를 폴링·캐싱하여 관리자 상태 변경이 반영되는 흐름 구현
  • 상태값(접수완료/분석중/분석완료/보완요청)을 컬러 배지로 구분하는 상태 관리 워크플로우 컴포넌트 설계
  • 좌측 리스트-우측 상세 패널 레이아웃으로 페이지 전환 없이 항목을 탐색하는 마스터-디테일 UI 구현

React Query 기반 폴링으로 관리자 처리 결과가 별도 새로고침 없이 사용자 화면 상태 배지에 반영되는 구조를 설계합니다.

점검 현황 대시보드
점검 현황 대시보드 실제 화면
핵심 기능 2

점검 데이터 업로드 위저드

구조물명·유형·점검일 등 기본 정보 입력부터 LiDAR 점군(.pcd), 위치 궤적(.txt), RGB·Depth 이미지, 캘리브레이션(json) 업로드, 최종 확인까지 7단계로 나눈 업로드 위저드를 구현합니다.

  • react-dropzone + presigned URL로 S3 호환 오브젝트 스토리지에 분할 업로드하고 중단 지점부터 이어올리기 구현
  • 7단계 폼 상태를 단일 스토어로 관리하여 뒤로가기·새로고침에도 입력값이 유지되는 위저드 상태 관리 설계
  • 파일 확장자(.pcd/.txt/.png/.jpg/.json)와 RGB-Depth 이미지 장수 일치를 단계별로 검증하는 유효성 로직 구현

S3 멀티파트 업로드와 재개형(resume) 업로드 로직을 조합해 대용량 파일 전송 중단에도 처음부터 다시 올리지 않도록 설계합니다.

점검 데이터 업로드 위저드
점검 데이터 업로드 위저드 실제 화면
핵심 기능 3

점검 결과 확인 및 다운로드

관리자가 업로드한 3D 외관조사망도 결과 HTML(약 3MB, 외부 분석 프로그램의 산출물)을 사용자가 웹 화면에서 안전하게 확인하고 다운로드할 수 있도록 sandboxed iframe으로 격리 표시합니다.

  • iframe sandbox 속성(allow-scripts allow-same-origin 최소 권한)으로 외부 결과 HTML을 격리 렌더링
  • S3 presigned GET URL로 결과 파일을 blob으로 스트리밍하여 직접 다운로드 가능하도록 구현
  • JWT 기반 권한 검사로 본인이 업로드한 점검 결과만 접근 가능하도록 라우트·API 이중 검증

sandboxed iframe과 blob URL 조합으로 외부에서 생성된 결과 HTML을 안전하게 격리 표시하면서도 다운로드 경험을 자연스럽게 연결하는 구조를 설계합니다.

점검 결과 확인 및 다운로드
점검 결과 확인 및 다운로드 실제 화면
핵심 기능 4

이용 권한 안내 및 구매 문의

이용 권한이 부여된 계정만 점검 업로드·결과 확인 기능이 활성화되고, 권한이 없는 계정은 자동으로 구매 문의 안내 화면으로 분기됩니다.

  • 권한 플래그(hasAccess) 기반 라우트 가드로 미부여 계정을 구매 문의 화면으로 자동 리다이렉트
  • 구매 문의 폼 제출을 내부 API로 접수해 관리자 문의 목록에 자동 반영
  • 이메일 회원가입·로그인(JWT) 플로우와 연동해 가입 직후에도 동일한 권한 분기 로직 적용

권한 미부여 계정의 진입을 기능 단위가 아닌 라우트 단위에서 선제적으로 분기하여 UI 노출과 API 접근을 함께 통제합니다.

이용 권한 안내 및 구매 문의
이용 권한 안내 및 구매 문의 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

요구사항 분석 및 업로드 스키마 설계 · 2026.09

7단계 업로드 항목·검증 규칙 정의, PostgreSQL 점검/파일 테이블 설계 및 상태 워크플로우 매핑

STEP 2

업로드 파이프라인 및 내부 API 개발 · 2026.09

S3 presigned URL 발급, 분할 업로드·이어올리기 API, 상태 전환 API를 Express 기반으로 구현

STEP 3

위저드 UI 및 결과 확인 화면 개발 · 2026.09

React 7단계 위저드, 마스터-디테일 대시보드, sandboxed 결과 뷰어 화면 구현

STEP 4

권한 분기 및 통합 테스트 · 2026.09

이용 권한 라우트 가드 적용, 업로드~결과확인 전체 플로우 통합 테스트 수행

프로젝트 성과

주요 성과

S3 멀티파트 이어올리기 업로드 구현presigned URL 기반 분할 업로드와 중단 지점 재개 로직을 설계해 대용량 점군·이미지 파일 전송을 안정화합니다.
7단계 위저드 상태 관리 설계단일 폼 스토어로 7단계 입력값을 관리하고 단계별 파일 형식·수량 검증 로직을 구현해 제출 전 오류를 사전 차단합니다.
결과 HTML 샌드박스 격리 렌더링 구현iframe sandbox와 blob URL을 조합해 외부 분석 프로그램이 생성한 결과 HTML을 안전하게 격리 표시하는 구조를 설계합니다.
권한 기반 라우트·API 이중 검증 구축계정별 이용 권한 플래그로 라우트와 API 양쪽에서 접근을 검증해 본인 점검 결과만 조회 가능하도록 구현합니다.
Highlights

기술적 주안점

  • React Query 기반 폴링으로 관리자 처리 결과가 별도 새로고침 없이 사용자 화면 상태 배지에 반영되는 구조를 설계합니다
  • S3 멀티파트 업로드와 재개형(resume) 업로드 로직을 조합해 대용량 파일 전송 중단에도 처음부터 다시 올리지 않도록 설계합니다
  • sandboxed iframe과 blob URL 조합으로 외부에서 생성된 결과 HTML을 안전하게 격리 표시하면서도 다운로드 경험을 자연스럽게 연결하는 구조를 설계합니다

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

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

무료 상담 시작하기