63 lines
3.6 KiB
Markdown
63 lines
3.6 KiB
Markdown
# o2o-ssulbox — 썰박스
|
|
|
|
병맛 역사 **썰툰(썰박스)** 마케팅 쇼츠 플랫폼. 네이버 링크/업장명만 넣으면
|
|
조선왕·삼국지·그리스로마신화 시나리오로 AI가 대본→그림→목소리→영상을 자동 생성한다.
|
|
인스타 느낌의 모바일 전용 UI(웹은 좌측 사이드바) + 계정/좋아요/댓글/크레딧 소셜 레이어.
|
|
|
|
```
|
|
o2o-ssulbox/
|
|
├── frontend/ React + Vite + TypeScript + Tailwind (모바일 전용 반응형)
|
|
│ └── src/ App · components · api(백엔드 /api 연동) · data · icons
|
|
└── backend/ FastAPI + SQLAlchemy(async) — API 전용
|
|
├── app/
|
|
│ ├── main.py 앱·라우터·lifespan(테이블 생성 + output 동기화)
|
|
│ ├── config.py 설정(개발 DB=SQLite, JWT, NAVER, 크레딧)
|
|
│ ├── database.py async 세션 + Base + TimestampMixin
|
|
│ ├── models.py User·Content·Like·Comment·CreditTransaction·SocialAccount
|
|
│ ├── deps.py 현재 사용자(필수/선택) + 페이지네이션
|
|
│ ├── security.py JWT 발급/검증
|
|
│ ├── credit_service.py 크레딧 충전/차감(원장)
|
|
│ ├── content_sync.py output 스캔 → content 반영
|
|
│ ├── jobs.py 생성 잡(subprocess → 내장 generator)
|
|
│ └── routers/ auth · content(피드/생성/좋아요/자동완성) · comments · credit · sns
|
|
└── generator/ ★생성 엔진 내장(vendored, 외부 shorts_all 참조 없음)
|
|
├── naver.py media.py 공유 크롤러/툴박스(1벌)
|
|
├── fonts/ bgm/ 공용 폰트·BGM(1벌 — 3엔진 공유)
|
|
├── animation/ 조선왕 (character/ data/ = 시나리오별)
|
|
├── animation_samgukji/ 삼국지
|
|
└── animation_greekroman/ 그리스로마신화
|
|
```
|
|
|
|
## 기능 (castad 백엔드에서 포팅)
|
|
- **인증** — JWT(액세스/리프레시). 개발용 `dev-login`(카카오 없이). 카카오는 키 설정 후 활성.
|
|
- **피드** — output 기반, 정렬(최신/좋아요) + 페이지네이션.
|
|
- **좋아요 / 2-depth 댓글** — 로그인 사용자 기준.
|
|
- **크레딧** — 가입 지급 + 영상 1편당 차감(원장 기록). 채널의 "남은 크레딧"과 연동.
|
|
- **업장명 자동완성** — 네이버 지역검색(키 설정 시).
|
|
- **SNS 연동** — 유튜브/인스타 계정 연결·업로드(구조/엔드포인트, OAuth 키 설정 후 활성).
|
|
|
|
## 실행
|
|
|
|
### 1) 백엔드 (FastAPI, :8000)
|
|
```bash
|
|
cd backend
|
|
pip install -r requirements.txt # sqlalchemy, aiosqlite, python-jose, ...
|
|
# GEMINI_API_KEY 는 환경변수 또는 backend/.env (예시: .env.example)
|
|
python -m uvicorn app.main:app --reload --port 8000
|
|
```
|
|
DB는 개발 기본 **SQLite**(`backend/ssulbox.db`, 자동 생성). 첫 실행 시 output 폴더를 스캔해 피드를 채운다.
|
|
|
|
### 2) 프론트 (Vite dev, :5173)
|
|
```bash
|
|
cd frontend
|
|
npm install
|
|
npm run dev # /api·/videos 는 :8000 으로 프록시
|
|
```
|
|
브라우저 `http://localhost:5173`. 데스크톱은 좌측 사이드바, 모바일 폭에선 하단 탭바로 전환.
|
|
|
|
## 남은 설정(키 필요)
|
|
- **카카오 로그인**: `KAKAO_*` — 지금은 dev-login 사용.
|
|
- **네이버 자동완성**: `NAVER_CLIENT_ID/SECRET`.
|
|
- **SNS 업로드**: 유튜브(Google OAuth)·인스타(Graph API) 앱 키.
|
|
- **운영 DB**: `DATABASE_URL` 로 MySQL 지정(패턴은 castad와 동일해 전환 용이). 좋아요는 필요 시 Redis write-behind로 확장 가능.
|