chore: initial project setup and implementation plan

This commit is contained in:
Ümit Tunç
2026-04-28 10:00:00 +03:00
commit 01ea37f6a2
4 changed files with 979 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
# 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ı.