From 5855a6f08a1b1d9de17beafbd0786c34157bb2b3 Mon Sep 17 00:00:00 2001 From: caadiq Date: Mon, 15 Dec 2025 23:59:24 +0900 Subject: [PATCH] Add README files for root, backend, and frontend --- README.md | 63 ++++++++++++++++++++++++++++++++++++ backend/README.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++ frontend/README.md | 74 +++++++++++++++++++++++++++++++++++++------ 3 files changed, 207 insertions(+), 9 deletions(-) create mode 100644 README.md create mode 100644 backend/README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..6293734 --- /dev/null +++ b/README.md @@ -0,0 +1,63 @@ +# 🎬 FFmpeg GUI + +온라인 μ˜μƒ URL을 μž…λ ₯ν•˜μ—¬ λ‹€μš΄λ‘œλ“œν•  수 μžˆλŠ” μ›Ή 기반 FFmpeg GUI μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. + +![Tech Stack](https://img.shields.io/badge/React-18-61DAFB?logo=react) +![Tech Stack](https://img.shields.io/badge/Node.js-Express-339933?logo=node.js) +![Tech Stack](https://img.shields.io/badge/FFmpeg-007808?logo=ffmpeg) +![Tech Stack](https://img.shields.io/badge/Docker-2496ED?logo=docker) + +--- + +## ✨ μ£Όμš” κΈ°λŠ₯ + +- πŸ”— **URL 기반 λ‹€μš΄λ‘œλ“œ** - 온라인 μ˜μƒ URL μž…λ ₯으둜 κ°„νŽΈν•˜κ²Œ λ‹€μš΄λ‘œλ“œ +- βœ‚οΈ **ꡬ간 μ„€μ •** - μ‹œμž‘/μ’…λ£Œ μ‹œκ°„ μ§€μ •μœΌλ‘œ μ›ν•˜λŠ” λΆ€λΆ„λ§Œ μΆ”μΆœ +- πŸ“ **파일λͺ… μ§€μ •** - λ‹€μš΄λ‘œλ“œ μ‹œ μ›ν•˜λŠ” 파일λͺ…μœΌλ‘œ μ €μž₯ +- πŸ›‘οΈ **헀더 μ˜΅μ…˜** - User-Agent, Referer μ„€μ •μœΌλ‘œ 403 μ—λŸ¬ 우회 +- ⚑ **μ‹€μ‹œκ°„ 슀트리밍** - FFmpeg 직접 슀트리밍으둜 λΉ λ₯Έ λ‹€μš΄λ‘œλ“œ + +--- + +## πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰 + +``` +ffmpeg-gui/ +β”œβ”€β”€ frontend/ # React + Vite ν”„λ‘ νŠΈμ—”λ“œ +β”œβ”€β”€ backend/ # Node.js + Express λ°±μ—”λ“œ +β”œβ”€β”€ docker-compose.yml # Docker Compose μ„€μ • +└── Dockerfile # Docker λΉŒλ“œ 파일 +``` + +--- + +## πŸš€ μ‹€ν–‰ 방법 + +### Docker (ꢌμž₯) + +```bash +docker compose up -d +``` + +### 개발 λͺ¨λ“œ + +```bash +# λ°±μ—”λ“œ +cd backend && npm install && npm start + +# ν”„λ‘ νŠΈμ—”λ“œ +cd frontend && npm install && npm run dev +``` + +--- + +## 🌐 접속 + +- **URL**: https://ffmpeg.caadiq.co.kr +- **포트**: 3000 (λ‚΄λΆ€) + +--- + +## πŸ“„ λΌμ΄μ„ μŠ€ + +MIT License diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..1fa49a3 --- /dev/null +++ b/backend/README.md @@ -0,0 +1,79 @@ +# πŸ–₯️ FFmpeg GUI - Backend + +FFmpegλ₯Ό ν™œμš©ν•œ μ˜μƒ λ‹€μš΄λ‘œλ“œ/λ³€ν™˜ API μ„œλ²„μž…λ‹ˆλ‹€. + +![Node.js](https://img.shields.io/badge/Node.js-18+-339933?logo=node.js) +![Express](https://img.shields.io/badge/Express-4.x-000000?logo=express) +![FFmpeg](https://img.shields.io/badge/FFmpeg-Required-007808?logo=ffmpeg) + +--- + +## πŸ› οΈ 기술 μŠ€νƒ + +| 기술 | μ„€λͺ… | +| ----------- | ------------- | +| **Node.js** | λŸ°νƒ€μž„ ν™˜κ²½ | +| **Express** | μ›Ή ν”„λ ˆμž„μ›Œν¬ | +| **FFmpeg** | μ˜μƒ 처리 | +| **UUID** | 고유 ID 생성 | + +--- + +## πŸ“‘ API μ—”λ“œν¬μΈνŠΈ + +### `POST /api/download-request` + +λ‹€μš΄λ‘œλ“œ μš”μ²­μ„ μƒμ„±ν•©λ‹ˆλ‹€. + +**Request Body:** + +```json +{ + "url": "μ˜μƒ URL", + "title": "파일λͺ… (선택)", + "options": { + "startTime": "00:00:00", + "endTime": "00:01:00", + "userAgent": "λΈŒλΌμš°μ € UA", + "referer": "리퍼러 URL" + } +} +``` + +**Response:** + +```json +{ + "id": "uuid-v4-format" +} +``` + +--- + +### `GET /api/download/:id` + +μƒμ„±λœ μš”μ²­ ID둜 μ˜μƒμ„ λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€. + +- μš”μ²­μ€ **5λΆ„ ν›„ μžλ™ 만료**λ©λ‹ˆλ‹€. +- `Content-Type: video/mp4`둜 μŠ€νŠΈλ¦¬λ°λ©λ‹ˆλ‹€. + +--- + +## πŸš€ μ‹€ν–‰ 방법 + +```bash +# μ˜μ‘΄μ„± μ„€μΉ˜ +npm install + +# μ„œλ²„ μ‹€ν–‰ +npm start +``` + +μ„œλ²„λŠ” **포트 3000**μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€. + +--- + +## ⚠️ μš”κ΅¬μ‚¬ν•­ + +- Node.js 18+ +- FFmpeg μ„€μΉ˜ ν•„μš” (`ffmpeg`, `ffprobe`) diff --git a/frontend/README.md b/frontend/README.md index 18bc70e..c5bd923 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,16 +1,72 @@ -# React + Vite +# 🎨 FFmpeg GUI - Frontend -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. +FFmpeg GUI의 μ›Ή μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€. -Currently, two official plugins are available: +![React](https://img.shields.io/badge/React-18-61DAFB?logo=react) +![Vite](https://img.shields.io/badge/Vite-5-646CFF?logo=vite) +![TailwindCSS](https://img.shields.io/badge/TailwindCSS-3-06B6D4?logo=tailwindcss) -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh +--- -## React Compiler +## πŸ› οΈ 기술 μŠ€νƒ -The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). +| 기술 | μ„€λͺ… | +| --------------- | -------------- | +| **React 18** | UI 라이브러리 | +| **Vite** | λΉŒλ“œ 도ꡬ | +| **TailwindCSS** | CSS ν”„λ ˆμž„μ›Œν¬ | -## Expanding the ESLint configuration +--- -If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. +## ✨ μ£Όμš” κΈ°λŠ₯ + +- πŸ“± **λ°˜μ‘ν˜• λ””μžμΈ** - λͺ¨λ°”일/λ°μŠ€ν¬ν†± μ΅œμ ν™” +- 🎯 **직관적인 UI** - κ°„λ‹¨ν•œ μž…λ ₯ 폼 +- ⏱️ **μ‹œκ°„ μ„€μ •** - μ‹œμž‘/μ’…λ£Œ μ‹œκ°„ μž…λ ₯ +- πŸ”§ **κ³ κΈ‰ μ˜΅μ…˜** - User-Agent, Referer μ„€μ • + +--- + +## πŸš€ μ‹€ν–‰ 방법 + +### 개발 λͺ¨λ“œ + +```bash +# μ˜μ‘΄μ„± μ„€μΉ˜ +npm install + +# 개발 μ„œλ²„ μ‹€ν–‰ +npm run dev +``` + +### ν”„λ‘œλ•μ…˜ λΉŒλ“œ + +```bash +# λΉŒλ“œ +npm run build + +# λΉŒλ“œ κ²°κ³Όλ¬Ό: dist/ +``` + +--- + +## πŸ“ ꡬ쑰 + +``` +frontend/ +β”œβ”€β”€ src/ +β”‚ β”œβ”€β”€ App.jsx # 메인 μ•± μ»΄ν¬λ„ŒνŠΈ +β”‚ β”œβ”€β”€ App.css # μŠ€νƒ€μΌ +β”‚ └── main.jsx # μ—”νŠΈλ¦¬ 포인트 +β”œβ”€β”€ public/ +β”‚ └── favicon.svg # νŒŒλΉ„μ½˜ +└── index.html # HTML ν…œν”Œλ¦Ώ +``` + +--- + +## βš™οΈ ν™˜κ²½ μ„€μ • + +| λ³€μˆ˜ | κΈ°λ³Έκ°’ | μ„€λͺ… | +| -------------- | ------ | -------------- | +| `VITE_API_URL` | `/api` | API μ—”λ“œν¬μΈνŠΈ |