Files
VibeDownloader/docs/implementation-plan.md
T
2026-04-28 10:00:00 +03:00

70 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# YouTube Video & MP3 Downloader - Electron.js Planı
Bu proje, modern ve göz alıcı bir **Glassmorphic** (cam morfolojisi) tasarım diline sahip, YouTube videolarını yüksek çözünürlükte indiren ve bunları yüksek kaliteli MP3 formatlarına dönüştürebilen bir masaüstü Electron.js uygulamasıdır.
## Proje Mimarisi ve Teknoloji Seçimleri
1. **Arayüz (Renderer)**:
- **Glassmorphic Tasarım**: `backdrop-filter: blur()`, yarı saydam sınırlar (semi-transparent borders), derin gölgeler, canlı degrade arka planlar (mesh gradients) ve akıcı mikro animasyonlar.
- **HTML5 & Vanilla CSS**: Harici ağır CSS kütüphaneleri olmadan, maksimum esneklik ve performans için saf CSS.
- **Font**: Google Fonts üzerinden modern ve premium bir görünüm sunan **Outfit** veya **Inter** fontu.
- **Lucide Icons**: Modern ve minimalist ikonlar için SVG tabanlı kullanım.
2. **Ana Süreç (Electron Main & Preload)**:
- **Güvenlik**: `nodeIntegration: false` ve `contextIsolation: true` kullanılarak güvenli IPC köprüsü oluşturulacaktır (`preload.js`).
- **İndirme Motoru (`yt-dlp`)**: YouTube'un sürekli değişen altyapısına uyum sağlamak için en kararlı çözüm olan `yt-dlp` aracı bir Node.js `child_process` veya sarmalayıcı (wrapper) üzerinden yönetilecektir.
- **Ses Dönüştürme (`ffmpeg`)**: İndirilen videoları veya doğrudan ses akışlarını yüksek kaliteli MP3'e (320kbps) dönüştürmek için `ffmpeg` entegrasyonu kurulacaktır.
---
## Kullanıcı İncelemesi Gereken Konular
> [!IMPORTANT]
> **İndirme Motoru Tercihi (`yt-dlp` vs `ytdl-core`)**
> Standart `ytdl-core` gibi saf JS kütüphaneleri YouTube'un sık güncellemeleri nedeniyle çok çabuk bozulmaktadır. Bu nedenle projemizde arka planda bağımsız çalışan ve kendini güncelleyebilen **`yt-dlp`** binary motorunu kullanmayı öneriyoruz. Sisteminizde python kurulu olmasa bile çalışabilen standalone binary'ler indirilecek veya paketlenecektir.
> [!TIP]
> **FFmpeg Bağımlılığı**
> MP3 dönüştürme ve yüksek çözünürlüklü (1080p+) video/ses birleştirme işlemleri için `ffmpeg` gereklidir. Uygulama ilk açılışta veya arka planda ffmpeg binary'lerinin varlığını kontrol edip gerekirse otomatik olarak temin edecek bir mekanizmaya sahip olacaktır.
---
## Önerilen Değişiklikler ve Dosya Yapısı
Yeni oluşturulacak proje yapısı şu şekilde olacaktır:
### [Core App Directory](file:///d:/Works/2026/youtube-downloader)
#### [NEW] [package.json](file:///d:/Works/2026/youtube-downloader/package.json)
Uygulama bağımlılıklarını (`electron`, `fluent-ffmpeg`, vb.) ve başlatma scriptlerini içerecektir.
#### [NEW] [main.js](file:///d:/Works/2026/youtube-downloader/main.js)
Electron ana süreci. Pencere yönetimi, `yt-dlp` ve `ffmpeg` işlemlerini yürütecek IPC dinleyicilerini barındırır.
#### [NEW] [preload.js](file:///d:/Works/2026/youtube-downloader/preload.js)
Güvenli IPC köprüsü. Arayüzün işletim sistemi komutlarına ve indirme durumlarına güvenli bir şekilde erişmesini sağlar.
#### [NEW] [index.html](file:///d:/Works/2026/youtube-downloader/src/index.html)
Ana arayüz şablonu. Glassmorphic paneller, URL giriş alanı, indirme formatı seçimleri (MP4/MP3), kalite seçenekleri, indirme kuyruğu ve ilerleme barlarını barındırır.
#### [NEW] [style.css](file:///d:/Works/2026/youtube-downloader/src/style.css)
Premium Glassmorphic CSS tasarımı. Renk paleti (Canlı morlar, neon pembeler ve derin cam mavileri), blur efektleri, glow animasyonları ve şık kart tasarımları bu dosyada tanımlanacaktır.
#### [NEW] [renderer.js](file:///d:/Works/2026/youtube-downloader/src/renderer.js)
Arayüz mantığı. Kullanıcı etkileşimlerini yakalar, IPC aracılığıyla `main.js`'e indirme emirleri gönderir ve canlı ilerleme durumunu (`progress`) arayüzde günceller.
#### [NEW] [downloader.js](file:///d:/Works/2026/youtube-downloader/utils/downloader.js)
`yt-dlp` ve `ffmpeg` süreçlerini yöneten yardımcı sınıf (helper). İndirme yüzdesini parse edip IPC kanalı üzerinden arayüze aktarır.
---
## Doğrulama ve Test Planı
### Otomatik & Manuel Testler
- **IPC Güvenlik Testi**: Geliştirici konsolundan doğrudan Node.js fonksiyonlarına erişimin engellendiğinin doğrulanması.
- **İndirme Testleri**:
- Farklı uzunluktaki YouTube video linklerinin analizi (video bilgisi çekme: başlık, küçük resim, süre).
- MP4 (Video + Ses birleştirilmiş) formatında başarıyla indirme testi.
- Sadece MP3 (En yüksek kalitede ses çıkarma ve ffmpeg ile dönüştürme) formatında indirme testi.
- **Görsel/UI Testleri**: Farklı pencere boyutlarında Glassmorphism efektlerinin, arka plan degrade geçişlerinin ve responsive düzenin doğrulanması.