Linki는 인플루언서와 광고주를 연결하는 종합 마케팅 플랫폼입니다.
인플루언서는 브랜드 캠페인에 참여하고, 광고주는 적합한 인플루언서를 찾아 마케팅을 진행할 수 있습니다.
전자계약, 실시간 채팅, 자동 정산 등의 기능을 통해 안전하고 투명한 광고 생태계를 제공합니다.
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ API Gateway │ │ Discovery │
│ (Vue.js) │◄──►│ (Port: 8000) │◄──►│ (Port: 8761) │
│ │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌───────▼──────┐ ┌──────▼──────┐ ┌─────▼──────┐
│Integration │ │Chat Service │ │Payment │
│Service │ │ │ │Service │
│ │ │ │ │ │
└──────────────┘ └─────────────┘ └────────────┘
│ │ │
┌───────▼──────┐ ┌──────▼──────┐ ┌─────▼──────┐
│Subscribe │ │Admin │ │Chatbot │
│Service │ │Integration │ │Service │
│ │ │Service │ │ │
└──────────────┘ └─────────────┘ └────────────┘
- Framework: Spring Boot 3.4.5+
- Language: Java 17
- Database: MySQL 8.0
- ORM: JPA/Hibernate + MyBatis
- Security: Spring Security + JWT
- Message Oriented middleware: Apache Kafka
- Service Discovery: Netflix Eureka
- API Gateway: Spring Cloud Gateway
- Cache: Redis
- External APIs:
- YouTube Data API v3
- 유캔사인 전자계약 API
- Toss Payments API
- OpenAI GPT API
- Framework: Vue.js 3
- State Management: Pinia
- Router: Vue Router 4
- HTTP Client: Axios
- Charts: ApexCharts, ECharts
- Real-time Communication: WebSocket + STOMP
- Cloud Storage: Naver NCloud
- Build Tool: Gradle
- Development Tools: Vite, ESLint, Prettier
- 인플루언서: 채널 등록, 캠페인 제안서 제출, 계약 관리
- 광고주: 캠페인 생성, 인플루언서 선택, 계약서 작성
- 관리자: 사용자 관리, 계약 승인, 정산 관리
- OAuth 로그인: Google 소셜 로그인 지원
- 캠페인 생성 및 관리
- 제안서 제출 및 검토
- 전자계약서 생성 (유캔사인 연동)
- 계약 상태 자동 업데이트
- 광고 이행 확인 시스템
- WebSocket 기반 실시간 채팅
- 계약 진행 상황 알림
- SSE(Server-Sent Events) 기반 알림 시스템
- 이메일 알림 기능
- Toss Payments 연동 결제
- 구독 자동 갱신 서비스
- 구독 취소 서비스
- YouTube 채널 통계 수집
- 캠페인 성과 분석
- 대시보드 및 차트 제공
- 인플루언서/광고주 평가 시스템
- GPT 기반 챗봇 서비스
- 캠페인 추천 시스템
- 콘텐츠 분석
linki/
├── backend/
│ ├── discovery-service/ # Eureka 서버
│ ├── apigateway-service/ # API 게이트웨이
│ ├── integration-service/ # 메인 비즈니스 로직
│ ├── admin-integration-service/ # 관리자 기능
│ ├── chat-service/ # 채팅 서비스
│ ├── payment-service/ # 결제 서비스
│ ├── subscribe-service/ # 구독 서비스
│ └── chatbot-service/ # 챗봇 서비스
├── frontend/
│ ├── linki-user/ # 사용자 웹 앱
│ ├── linki-admin/ # 관리자 웹 앱
│ └── json-server/ # 개발용 Mock API
└── quries/ # 데이터베이스 스키마 & 더미데이터
- Java 17+
- Node.js 18+
- MySQL 8.0+
- Redis 6.0+
- Apache Kafka 2.8+
mysql -u root -p quries/talbeInit.sql
mysql -u root -p linkiDB < quries/dummydata.sqlcd discovery-service
./gradlew bootRun
# http://localhost:8761cd apigateway-service
./gradlew bootRun
# http://localhost:8000# Integration Service (메인 서비스)
cd integration-service
./gradlew bootRun
# Chat Service
cd chat-service
./gradlew bootRun
# Payment Service
cd payment-service
./gradlew bootRun
# Subscribe Service
cd subscribe-service
./gradlew bootRun
# Admin Integration Service
cd admin-integration-service
./gradlew bootRun
# Chatbot Service
cd chatbot-service
./gradlew bootRuncd frontend/linki-user
npm install
npm run dev
# http://localhost:3001persistedstate API 추가
cd frontend/linki-user
npm install pinia-plugin-persistedstate@3cd frontend/linki-admin
npm install
npm run dev
# http://localhost:3002각 서비스의 application.yml 또는 application.properties에서 다음 설정들을 확인하세요:
# 공통 설정
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
spring:
datasource:
url: jdbc:mysql://localhost:3306/linkiDB
username: your_username
password: your_password
redis:
host: localhost
port: 6379# JWT Secret Key
export SECRET_HS256=your_jwt_secret_key
# YouTube API Key
export YOUTUBE_API_KEY=your_youtube_api_key
# 유캔사인 API
export UCAN_SIGN_API_KEY=your_ucan_sign_key
# Toss Payments
export TOSS_CLIENT_KEY=your_toss_client_key
export TOSS_SECRET_KEY=your_toss_secret_key
# OpenAI API
export OPENAI_API_KEY=your_openai_api_key- user: 사용자 기본 정보
- influencer: 인플루언서 정보
- advertiser: 광고주 정보
- channel: YouTube 채널 정보
- campaign: 캠페인 정보
- proposal: 제안서 정보
- contract: 계약 정보
- settlement: 정산 정보
- chat: 채팅방 정보
- message: 메시지 정보
POST /v1/api/auth/login- 로그인POST /v1/api/auth/register- 회원가입GET /v1/api/user/profile- 프로필 조회
GET /v1/api/campaigns- 캠페인 목록POST /v1/api/campaigns- 캠페인 생성POST /v1/api/proposals- 제안서 제출
POST /v1/api/contracts- 계약서 생성GET /v1/api/contracts/{id}- 계약서 조회PUT /v1/api/contracts/{id}/complete- 계약 완료
GET /v1/chat-service/api/chats- 채팅방 목록WebSocket /ws/chat- 실시간 채팅
POST /v1/payment-service/api/billing- 빌링키 등록POST /v1/subscribe-service/api/subscribe- 구독 신청
- JWT 기반 인증/인가
- Spring Security 설정
- CORS 정책 적용
- API Rate Limiting
- 민감 정보 암호화
- Redis 캐싱 적용
- 데이터베이스 인덱스 최적화 (54개 인덱스 적용)
- Keyset 페이지네이션
- DB락을 통한 동시성 처리
- 비동기 처리(use kafka) 를 통한 트래픽 처리
- CDN 적용 (이미지/정적 파일)
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- 신민혁(팀장) : 데이터 분석/ 플렛폼 관리자 기능
- 고윤아(부팀장) : notion 및 문서관리 , 채팅
- 이정섭 : 네트워크 관리 , 결제 / 구독 기능 , msa인프라
- 김성준 : 시큐리티 / 회원 / 챗봇
- 김선민 : 인플루언서 기능
- 정난희 : 광고주 기능
프로젝트에 대한 문의사항이 있으시면 이슈를 등록하거나 이메일로 연락주세요.
Linki - 인플루언서와 브랜드를 연결하는 혁신적인 마케팅 플랫폼 🚀