feat: initialize new Flutter project with core feature structure and cross-platform configuration

This commit is contained in:
Ümit Tunç
2026-04-29 21:58:29 +03:00
parent 859460434d
commit 34c5b44ddf
149 changed files with 6882 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
# 🚀 FastWatcher
FastWatcher, mobil cihazlardaki video içeriklerini akıllı televizyonlara (Android TV vb.) en hızlı ve stabil şekilde aktarmak için tasarlanmış, modern ve SOLID prensiplerine dayalı bir Flutter uygulamasıdır.
## 🧠 Çalışma Mantığı ve Mimari
Uygulamanın kalbinde, mobil cihazın bir **"Kumanda/Gönderici"** (Sender) ve televizyonun bir **"Alıcı"** (Receiver) olarak çalıştığı bir ekosistem yatar.
### 1. Cihaz Keşfi (mDNS / Zero-config)
FastWatcher, cihazların birbirini bulması için karmaşık IP girişleri gerektirmez. **mDNS (Multicast DNS)** protokolünü kullanır:
- **TV (Receiver):** Uygulama açıldığında arka planda `_http._tcp` tipinde bir servis yayınlamaya başlar.
- **Mobil (Sender):** "Eşleş" butonuna basıldığında ağı tarar ve FastWatcher servisi yayınlayan TV'leri anında listeler.
### 2. İletişim Protokolü (Local HTTP Server)
Cihazlar arası veri aktarımı raw socket yerine daha güvenli ve yönetilebilir olan **HTTP** üzerinden gerçekleşir:
- TV tarafında küçük bir **Shelf HTTP Server** çalışır.
- Mobil cihaz, TV'ye bir `POST /play` isteği gönderir.
- **Payload Yapısı:**
```json
{
"url": "https://video-kaynagi.com/stream.m3u8",
"title": "Video Başlığı",
"timestamp": 1714415045
}
```
### 3. Video Linki Ayrıştırma (Headless Extraction)
Modern web siteleri video linklerini doğrudan paylaşmaz. FastWatcher bu sorunu **Headless WebView** ile çözer:
- Kullanıcı bir web sayfasını paylaştığında, uygulama arka planda gizli bir tarayıcı açar.
- Sayfa yüklenirken ağ trafiği dinlenir (`onLoadResource`).
- `.m3u8`, `.mp4` veya `.mkv` gibi video stream linkleri yakalandığı an sayfa kapatılır ve link TV'ye fırlatılır.
### 4. Video Oynatma (MediaKit Engine)
TV tarafında en geniş codec desteği için standart oynatıcılar yerine **MediaKit (libmpv tabanlı)** kullanılır:
- **Yüksek Performans:** 4K videolar ve HLS streamleri donmadan oynatılır.
- **Esneklik:** MKV, MP4, TS ve özel şifreli stream formatlarını destekler.
## 🏗 Mimari Yapı (Clean Architecture)
Proje, **Feature-First Clean Architecture** yapısını takip eder:
```mermaid
graph TD
UI[Presentation / UI] --> Riverpod[State Management / Riverpod]
Riverpod --> Repo[Data / Repository]
Repo --> Service[External Services / nsd, shelf, media_kit]
```
- **lib/core:** Tema, sabitler ve ortak kullanılan yardımcı sınıflar.
- **lib/features/setup:** Cihaz rolü (TV/Telefon) seçimi ve ayarların kalıcılığı.
- **lib/features/discovery:** mDNS ağ tarama ve servis kayıt işlemleri.
- **lib/features/sender:** Link yakalama, headless parsing ve HTTP POST gönderim mantığı.
- **lib/features/receiver:** HTTP Server yönetimi ve video oynatıcı entegrasyonu.
## 🛠 Kullanılan Teknolojiler
| Teknoloji | Amaç |
| :--- | :--- |
| **Flutter Riverpod** | Reactive State Management ve Dependency Injection. |
| **NSD** | Ağ üzerindeki cihazları otomatik keşfetme (mDNS). |
| **Shelf** | TV tarafında REST API sunucusu kurma. |
| **MediaKit** | Profesyonel seviyede video oynatma motoru. |
| **InAppWebView** | Sayfa içindeki gizli video linklerini yakalama. |
---
> [!IMPORTANT]
> Bu uygulama, televizyon ve mobil cihazın **aynı Wi-Fi ağında** olmasını gerektirir.