# Zefio-edu

무료 오픈 교안(Slidev) + 유료 라이브 클래스(Meet · 신청 · 입금) 통합 플랫폼.

폴더 이름이 **`zefio-edu`** 입니다. (구 monorepo / apps/zefio-edu 중첩 제거)

## 구조

```
zefio-edu/                 ← 저장소 루트 (이 폴더)
├── src/                   # Vue 앱
├── public/
│   ├── free/              # 무료 Slidev 빌드 결과 (--base /free/<slug>/)
│   └── pro/               # 유료 정적 교안 (python, java, …)
├── packages/
│   └── edu-slides/        # Slidev 소스 (slides/*.md)
├── scripts/
├── supabase/
├── package.json           # 앱 + workspace 루트
└── pnpm-workspace.yaml
```

| 구분 | 경로 | URL 예 |
|------|------|--------|
| 무료 교안 | `public/free/<slug>/` | `/free/vibe_e/` |
| 유료 교안 | `public/pro/<과목>/` | `/pro/python/index.html` |
| SPA 래퍼 | `/materials/python` 등 | iframe → `/pro/...` |

**`edu-basic` / `deploy/` / `sync-open` 은 사용하지 않습니다.**  
Slidev가 바로 `public/free` 로 빌드됩니다.

## Slidev 빌드 경로 (정답)

`packages/edu-slides` 기준:

```bash
slidev build slides/05_vibe_e.md --out ../../public/free/vibe_e --base /free/vibe_e/
```

- `../../public/free/...` → 저장소 루트 `public/free`
- `--base /free/vibe_e/` → 브라우저에서 `/free/vibe_e/` 로 접속할 때 자산 경로 일치

❌ 잘못된 예: `../../../deploy/open/vibe_e` (중간 deploy 폴더, base 불일치)

## 시작

```bash
pnpm install
pnpm dev                 # http://localhost:5173

# 무료 교안 전체 빌드 후 앱 빌드
pnpm build:free
pnpm build
```

개별 교안 미리보기:

```bash
pnpm --filter edu-slides run dev:05
pnpm --filter edu-slides run build:free:05
```

## 환경 변수

`.env.example` → `.env`  
Supabase / Meet / 알림 / 입금 계좌

## 배포

- Vite `dist/` + `public/free`, `public/pro` 정적 파일
- `/free/**`, `/pro/**` 은 SPA fallback보다 **실파일 우선**
- node_modules 는 루트와 `packages/edu-slides` 에만 생기면 정상 (pnpm workspace)

## node_modules가 여러 곳?

pnpm monorepo에서는:

- 루트 `node_modules` — 앱(Vue) 의존성
- `packages/edu-slides/node_modules` — Slidev 의존성

앱을 루트로 올렸으므로 **`apps/zefio-edu/node_modules`는 더 이상 없습니다.**
