initial commit

This commit is contained in:
2025-12-21 11:43:22 -06:00
parent 1f7eb01afb
commit d28de69bcb
28 changed files with 4067 additions and 108 deletions

153
docs/setup.md Normal file
View File

@@ -0,0 +1,153 @@
# Setup Guide
## Prerequisites
### System Requirements
- Node.js 18+ and npm
- Python 3.6+ (for yt-dlp)
- ffmpeg (for audio conversion)
### Installing Dependencies
#### macOS
```bash
# Install yt-dlp
brew install yt-dlp
# Install ffmpeg
brew install ffmpeg
```
#### Linux (Ubuntu/Debian)
```bash
# Install yt-dlp
pip3 install yt-dlp
# Install ffmpeg
sudo apt-get update
sudo apt-get install ffmpeg
```
#### Windows
```bash
# Install yt-dlp
pip install yt-dlp
# Install ffmpeg
# Download from https://ffmpeg.org/download.html
# Add to PATH
```
## Installation
1. **Clone the repository**
```bash
git clone <repository-url>
cd Downlink
```
2. **Install npm dependencies**
```bash
npm install
```
3. **Verify yt-dlp installation**
```bash
yt-dlp --version
```
4. **Verify ffmpeg installation**
```bash
ffmpeg -version
```
## Running the Application
### Development Mode
```bash
npm run dev
```
The application will be available at `http://localhost:3000`
### Production Build
```bash
npm run build
npm start
```
## Directory Structure
```
Downlink/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ │ ├── download/ # Download endpoint
│ │ └── info/ # Video info endpoint
│ ├── page.tsx # Main page
│ └── layout.tsx # Root layout
├── components/ # React components
│ └── ui/ # shadcn/ui components
├── lib/ # Utility functions
│ ├── types.ts # TypeScript types
│ └── youtube.ts # YouTube download logic
├── docs/ # Documentation
├── downloads/ # Temporary download storage (gitignored)
└── public/
└── downloads/ # Served download files (gitignored)
```
## Environment Variables
Create a `.env.local` file in the project root (copy from `.env.example`):
```bash
# Required if yt-dlp is not in PATH
YT_DLP_PATH=/path/to/yt-dlp
# Optional: FFmpeg path (if not in PATH)
# FFMPEG_PATH=/path/to/ffmpeg
```
### Available Variables
- **`YT_DLP_PATH`** (optional): Full path to yt-dlp executable if not in PATH
- Example: `YT_DLP_PATH=/Users/jeff/Desktop/yt-dlp_macos`
- Example: `YT_DLP_PATH=/opt/homebrew/bin/yt-dlp`
- If not set, the system will look for `yt-dlp` in PATH
- **`FFMPEG_PATH`** (optional): Full path to ffmpeg executable if not in PATH
- Currently not used but reserved for future use
### Future Environment Variables
- `MAX_FILE_SIZE`: Maximum file size limit
- `CLEANUP_INTERVAL`: File cleanup interval
- `ALLOWED_DOMAINS`: Allowed video domains
## Troubleshooting
### yt-dlp not found
- Ensure yt-dlp is installed and in your PATH
- Try: `which yt-dlp` to verify installation
- Reinstall if needed: `pip3 install --upgrade yt-dlp`
### ffmpeg not found
- Ensure ffmpeg is installed and in your PATH
- Try: `which ffmpeg` to verify installation
- Audio conversion (MP3, WAV) will fail without ffmpeg
### Download fails
- Check YouTube URL format
- Verify internet connection
- Check server logs for detailed error messages
- Ensure sufficient disk space in downloads directory
### Port already in use
- Change port: `npm run dev -- -p 3001`
- Or kill process using port 3000
## Next Steps
- Read [YouTube Downloader Documentation](./youtube-downloader.md)
- Read [Transcoding Documentation](./transcoding.md)
- Check [Agent Instructions](./AGENTS.md) for contributing guidelines