크리에이터와 광고주를 잇는 안전한 실시간 광고 매칭 및 에스크로 플랫폼
Ad-Connect는 크리에이터(인플루언서)와 광고주 간의 투명하고 안전한 비즈니스 협업을 지원하는 플랫폼입니다. 포트폴리오 실시간 동기화, 전자 계약 체결, 에스크로 안전 결제 및 실시간 협의 시스템을 한 번에 제공합니다.
- 2026.03.03 ~ 2026.05.22
사용자가 플랫폼에 진입하여 권한별 기능을 수행하는 전체 흐름입니다.
graph TD
%% 스타일 정의
classDef main fill:#6366f1,stroke:#4f46e5,stroke-width:2px,color:#fff;
classDef creator fill:#3b82f6,stroke:#2563eb,stroke-width:2px,color:#fff;
classDef advertiser fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff;
classDef admin fill:#f59e0b,stroke:#d97706,stroke-width:2px,color:#fff;
classDef auth fill:#ec4899,stroke:#db2777,stroke-width:2px,color:#fff;
%% 노드 정의 및 흐름 연결
Start([시작]) --> Landing["메인 랜딩 페이지"]:::main
Landing --> Auth{"로그인 / 회원가입"}:::auth
Auth -->|1단계| PWLogin["이메일 & 비밀번호 로그인"]:::auth
PWLogin -->|2단계| OTPVerify["2차 OTP 인증 (2FA)"]:::auth
OTPVerify -->|인증 성공| RoleCheck{"사용자 역할(Role) 판별"}:::auth
%% 크리에이터 흐름
RoleCheck -->|Creator| CreatorDash["크리에이터 대시보드"]:::creator
CreatorDash --> YoutubeSync["YouTube 채널 연동 (포트폴리오)"]:::creator
CreatorDash --> SearchCampaign["광고 캠페인 탐색 & 필터링"]:::creator
SearchCampaign --> ApplyCampaign["캠페인 지원서 제출"]:::creator
ApplyCampaign --> ContractPad["전자 계약 체결 (서명 패드)"]:::creator
ContractPad --> ChatCreator["광고주와 실시간 소통 (기획 협의)"]:::creator
%% 광고주 흐름
RoleCheck -->|Advertiser| AdvDash["광고주 대시보드"]:::advertiser
AdvDash --> RegisterCampaign["캠페인 신규 등록"]:::advertiser
RegisterCampaign --> EscrowPay["토스페이먼츠 에스크로 예치금 결제"]:::advertiser
EscrowPay --> MatchCreator["지원 크리에이터 심사 및 선정"]:::advertiser
MatchCreator --> ContractAdv["전자 계약서 서명 및 발급"]:::advertiser
ContractAdv --> ChatAdv["크리에이터와 실시간 소통 (피드백)"]:::advertiser
%% 최고 관리자 흐름
RoleCheck -->|Admin| AdminDash["최고 관리자 대시보드"]:::admin
AdminDash --> ApprCampaign["신규 등록 캠페인 승인/반려 관리"]:::admin
AdminDash --> ModerateReports["신고 피드 관리 (스팸, 욕설 등)"]:::admin
%% 실시간 소통 채널 공통화
ChatCreator <--> ChatRoom["실시간 채팅방 (Auto-Reply 엔진 작동)"]:::auth
ChatAdv <--> ChatRoom
ChatRoom --> CompleteCampaign["캠페인 미션 완료 및 예치금 정산"]
CompleteCampaign --> End([종료])
- 이메일/비밀번호 인증 후, 이메일로 자동 전송되는 6자리 일회용 보안 비밀번호(OTP)를 통한 2차 검증 체계 구현.
- YouTube API 연동 시뮬레이터를 기반으로 구독자 수, 평균 조회수, 캠페인 성공률 등의 지표를 실시간 동기화.
- Recharts를 활용하여 캠페인 별 노출 성과, 클릭률(CTR), 구매 전환율(CVR) 시각화 차트 제공.
- 구독자 조건(1만+, 5만+, 10만+), 예산 범위, 카테고리(게임, 요리, 테크 등)별 즉각 필터링 기능.
- 최근 등록 순, 높은 예산 순, 높은 성과 순 정렬 시스템.
- 광고 계약 체결 시 캠페인 예산을 안전하게 예치하기 위한 토스페이먼츠 연동 시뮬레이터 탑재.
- 브라우저 Canvas API를 활용한 정밀 터치/마우스 서명 패드 구현.
- SHA-256 서명값 해시 처리 및 보안 저장 프로세스 제공.
- 양방향 실시간 STOMP 채팅: 스프링 WebSocket 메시지 브로커를 활용하여 크리에이터와 광고주 간의 무지연 양방향 메시징 구현.
- 하이브리드 동기화 (REST API Fallback): 네트워크 연결이 해제되거나 방화벽 등으로 웹소켓 접속이 끊어질 경우, 자동으로 2초 주기 REST Polling 동기화로 복구 및 대체되는 장애 예방 메커니즘 제공.
- 1.5초 지연 오토 리플라이(Auto-Reply) 봇: 백엔드 스레드를 통한 1.5초 지연 가상 타이핑 시뮬레이션을 구현하여 시나리오, 계약, 정산 등의 키워드 감지형 자동 피드백 응답 자동화.
AdConnect/
├── .vscode/ # 에디터 설정
├── api/ # API 관련 정의
├── backend/ # Spring Boot 백엔드 애플리케이션 (3계층 아키텍처 도입)
│ ├── src/main/java/ # Java 소스코드 (Controller, Service, Entity, Repository 구조)
│ │ └── com/adconnect/backend/
│ │ ├── config/ # Security 및 WebSocket STOMP 브로커 환경설정
│ │ ├── controller/# API 엔드포인트 및 WebSocket MessageMapping 수신 처리
│ │ ├── service/ # [NEW] 도메인 핵심 비즈니스 로직 및 트랜잭션 격리 계층
│ │ └── repository/# JPA 데이터 액세스 레이어
│ ├── src/main/resources/# 설정 파일 (application.yml - H2/MySQL 프로파일 전환 가능)
│ ├── Dockerfile # 백엔드 컨테이너 빌드 파일
│ └── build.gradle # Gradle 의존성 빌드 가이드 (spring-boot-starter-websocket 포함)
├── dist/ # 빌드 산출물 폴더
├── public/ # 정적 리소스 파일
├── src/ # React 프런트엔드 애플리케이션 (컴포넌트 구조 고도화)
│ ├── components/ # [NEW] 단일 책임으로 독립 분할된 리액트 컴포넌트 묶음
│ │ ├── auth/ # Landing, Login, Signup, OTP 2FA, Install 관련 뷰
│ │ ├── common/ # Toast, Sidebar, TopHeader 등 공통 UI 구성요소
│ │ └── dashboard, marketplace, portfolio, chat, contracts, admin, mypage/ # 기능별 전용 뷰
│ ├── utils/ # [NEW] 경량 native WebSocket STOMP 클라이언트 (stomp.js)
│ ├── App.jsx # 상태 중재(State Orchestrator) 및 전체 네비게이션 라우터
│ ├── index.css # 디자인 시스템 및 글로벌 Glassmorphism 스타일링 정의
│ └── main.jsx # 리액트 마운팅 진입점
├── vercel.json # Vercel SPA 서빙 구성 설정 파일
├── package.json # 노드 패키지 정보
└── README.md # 프로젝트 매뉴얼 가이드
- Node.js v18 이상
- JDK 17 이상
npm installnpm run devnpm run dev:backendnpm run dev:all
dev:all스크립트는concurrently라이브러리를 통해 리액트 개발 서버와 스프링 부트 서버를 동시에 기동합니다.