# FreeFlow Backend API

프리랜서/소규모 사업자를 위한 재무 관리 SaaS - 백엔드 API

## 기술 스택

- NestJS + Prisma ORM + TypeScript
- MySQL (officialsite.kr:23306 / freeflow)
- JWT Authentication (access + refresh tokens)
- TossPayments 빌링 (테스트 키)

## 포트 구성

| 서비스 | 로컬 포트 | 프로덕션 도메인 |
|--------|----------|----------------|
| Frontend | `3005` | `freeflow.officialsite.kr` |
| Backend API | `3006` | `api-freeflow.officialsite.kr` |

## 실행 방법

```bash
npm install
npx prisma generate
npm run start:dev   # http://localhost:3006/api
```

## 테스트 계정

| 항목 | 값 |
|------|-----|
| 이메일 | `test@freeflow.kr` |
| 비밀번호 | `Test1234` |

## API 모듈 (21개, 120+ 엔드포인트)

| 경로 | 설명 |
|------|------|
| `/api/auth/*` | 인증 (signup, login, logout, refresh, verify-email) |
| `/api/users/*` | 사용자 프로필, 비밀번호, 알림 설정 |
| `/api/businesses/*` | 사업자 정보, 인증서, 홈택스 연동 |
| `/api/clients/*` | 거래처 CRUD |
| `/api/projects/*` | 프로젝트 관리, 상태 변경 |
| `/api/estimates/*` | 견적서 CRUD, 발행, 복제, 계약 전환 |
| `/api/contracts/*` | 계약서 CRUD, 서명, 취소 |
| `/api/tax-invoices/*` | 전자세금계산서, 수정세금계산서 |
| `/api/cash-receipts/*` | 현금영수증 발행 |
| `/api/settlements/*` | 정산 관리, 결제 기록, 캘린더 |
| `/api/purchase-sales/*` | 매입매출 기록 |
| `/api/expenses/*` | 경비, 카테고리, 고정경비 |
| `/api/reports/*` | 매출/비용/순이익 리포트 |
| `/api/dashboard/*` | 대시보드 데이터 |
| `/api/templates/*` | 문서 템플릿 |
| `/api/ai-chat/*` | AI 세무 상담 |
| `/api/subscriptions/*` | 구독 플랜, 부가서비스 |
| `/api/credits/*` | 크레딧 잔액, 충전 |
| `/api/payments/*` | 카드 등록, TossPayments 결제 |
| `/api/integrations/*` | 카드/은행 연동 |
| `/api/notifications/*` | 알림 |

## 배포

- GitHub Actions (`.github/workflows/deploy.yml`)
- PM2: `freeflow-back` (port 3006)
- 서버 경로: `/var/www/back/freeflow`
