flowchart TB
subgraph Client["Client"]
Browser["사용자 브라우저"]
FE["React + Vite + TypeScript<br/>React Router · Axios"]
Browser --> FE
end
subgraph ApiLayer["API Layer"]
REST["Spring Boot REST API<br/>Spring Security · OAuth2 · JWT"]
Swagger["SpringDoc / Swagger<br/>API 명세 확인"]
end
subgraph DomainLayer["Domain / Service Layer"]
Auth["Auth · User<br/>소셜 로그인 · JWT · 프로필"]
Catalog["Catalog<br/>카테고리 · 아이템 타입 · 색상 · 스타일 · 계절"]
Wardrobe["Wardrobe · Clothes<br/>옷장 · 보유/미보유 · 옷 등록"]
Purchase["Purchase Capture<br/>구매내역 캡처 분석 · draft"]
Reco["Recommendation<br/>OOTD · 취향 · 유사 · 어울리는 옷 · AI MD"]
Outfit["Outfit · OutfitBook<br/>코디 · 코디북"]
Feed["Feed<br/>룩피드 · 좋아요 · 댓글 · 저장"]
end
subgraph DataLayer["Data / Storage"]
DB["MySQL / RDS<br/>JPA Entity"]
Redis["Redis<br/>Refresh Token 저장"]
S3["AWS S3<br/>이미지 저장"]
end
subgraph ExternalApis["External APIs"]
OAuth["OAuth Provider<br/>Kakao · Google · Naver"]
Gemini["Gemini API<br/>의류 분석 · 구매내역 분석 · 추천 설명"]
Naver["Naver Shopping API<br/>외부 상품 검색"]
Weather["Weather API<br/>추천 보조 날씨 정보"]
end
subgraph Infra["DevOps / Infra"]
EC2["AWS EC2<br/>Backend 실행"]
Compose["Docker Compose<br/>로컬/배포 실행 보조"]
Actions["GitHub Actions<br/>CI/CD"]
end
FE --> REST
REST -.-> Swagger
REST --> Auth
REST --> Catalog
REST --> Wardrobe
REST --> Purchase
REST --> Reco
REST --> Outfit
REST --> Feed
Auth --> OAuth
Auth --> Redis
Auth --> DB
Catalog --> DB
Wardrobe --> DB
Wardrobe --> S3
Purchase --> S3
Purchase --> Gemini
Purchase --> DB
Reco --> DB
Reco --> Naver
Reco --> Gemini
Reco --> Weather
Outfit --> DB
Feed --> DB
EC2 --> REST
Compose --> REST
Actions --> EC2
classDef client fill:#4338ca,stroke:#a5b4fc,color:#fff;
classDef api fill:#047857,stroke:#6ee7b7,color:#fff;
classDef domain fill:#065f46,stroke:#34d399,color:#fff;
classDef data fill:#1d4ed8,stroke:#93c5fd,color:#fff;
classDef external fill:#92400e,stroke:#fbbf24,color:#fff;
classDef infra fill:#404040,stroke:#a3a3a3,color:#fff;
class Browser,FE client;
class REST,Swagger api;
class Auth,Catalog,Wardrobe,Purchase,Reco,Outfit,Feed domain;
class DB,Redis,S3 data;
class OAuth,Gemini,Naver,Weather external;
class EC2,Compose,Actions infra;