[~] COOL-TV-RO.COM - PLAN COMPLET + CHECKLIST IMPLEMENTARE (v1) Data creare: 2026-02-23 Scop: proiect nou de la 0, cu checklist bifabil pe masura ce aprobam si implementam. Cum folosim acest fisier: - [ ] neapucat - [~] in lucru - [x] gata - [!] blocat / necesita decizie ================================================== 1) DIRECTIE PRODUS (REZUMAT) ================================================== [ ] cool-tv-ro.com devine produsul principal (platforma completa) [ ] tvgratis.ro si cool-tv-online.com devin funnel / suport SEO / redirecturi controlate [ ] cool-tv.ro vechi este reparat tehnic (HTTPS + redirect) ca sa nu pierdem brand traffic [ ] produsul va fi "default" prin utilitate si viteza, NU prin metode fortate (hijack homepage/default browser) Obiective principale: [ ] acces rapid la canale TV + radio [~] program TV (EPG) bun si usor de folosit [ ] vizionare stabila (surse multiple + failover) [~] personalizare (favorite, remindere, sync) [~] aplicatii / PWA / acces 1-click ================================================== 2) DESIGN MODERN, UNIC (BLACK / WHITE) ================================================== 2.1 Concept vizual (unic) [x] directie vizuala "mono editorial TV" (alb/negru, contrast mare, layout clar) [~] aspect premium, fara design generic de "lista de canale" [x] accent minim pentru stari functionale (ex: LIVE, warning, succes) fara a rupe tema mono [~] componente consistente (cards, badges, tabs, surse, timeline EPG) 2.2 Tema black / white [x] tema implicita: Black (background inchis, text alb) [x] tema alternativa: White (background alb, text negru) [x] buton de toggle tema foarte vizibil in header (desktop + mobile) [x] toggle persistent (retinut per user/local) [~] suport "system theme" optional (follow OS), dar cu override manual 2.3 UX / accesibilitate [x] contrast AA/AAA pe ambele teme [x] focus states clare (tastatura) [x] layout mobile-first [x] desktop rapid cu grid inteligent [ ] mod "TV/Remote" (tile mari) - faza ulterioara [x] motion minim si util (fara efecte inutile) 2.4 Elemente unice de design (propunere) [x] header compact + search dominant + actiuni rapide [x] cards de canal cu status live / program / scor sursa [ ] timeline EPG vizual (acum / urmeaza / diseara) [~] "sursa health chip" (verde/galben/rosu) per canal [x] instalare PWA/app CTA elegant, non-intruziv ================================================== 3) PRIORITATE SURSE (AUTOMAT) - REGULA CERUTA ================================================== Regula dorita pentru surse: [x] Sursa primara automata: rundletv.eu.org (RundleTV) [x] Sursa 2: canale-tv.com [x] Daca NU exista RundleTV pentru canal -> canale-tv.com devine Sursa 1 [x] rdslive = Sursa 3 (sau Sursa 2 daca lipseste sursa anterioara) [x] tvron = Sursa 4 Ordinea efectiva (logica finala): [x] daca exista RundleTV: 1. RundleTV (rundletv.eu.org) 2. canale-tv.com 3. rdslive 4. tvron [x] daca NU exista RundleTV: 1. canale-tv.com 2. rdslive 3. tvron Cerinte tehnice pentru managementul surselor: [x] fiecare canal are multiple surse cu prioritate numerica [~] auto-select "prima sursa sanatoasa" [~] fallback automat la urmatoarea sursa daca pica playerul [x] health-check periodic pe fiecare sursa [ ] override manual per canal (admin) [ ] log istoric pentru surse schimbate [~] scor per sursa (uptime, latency, raportari useri) - uptime/latency/istoric health implementate; raportari useri inca nu Atentie (de validat inainte de automatizare): [ ] verificare termeni de utilizare / drepturi / DMCA / riscuri legale pentru preluare surse [~] definire metoda tehnica de ingestie (manual, semi-auto, parser, import list) [~] anti-fragility: daca o sursa externa isi schimba structura, sistemul nu cade complet ================================================== 4) CE IMPLEMENTAM (TOT) - CONSOLIDAT (din proiectele tale + competitori + idei noi) ================================================== 4.1 Nucleu platforma (public) [x] homepage nou (hero + search + actiuni rapide) [x] pagina "Acum la TV" [x] pagina "Program TV" [x] pagina "Program TV azi" [x] pagina "Program TV diseara" [~] pagina "Program TV maine" [x] categorii canale (sport, stiri, filme, copii, documentare, muzica etc.) [x] pagina "Canale" (toate) [x] pagina individuala canal [~] radio live (lista + pagina) [x] top canale / populare [ ] colectii tematice (manuale + dinamice) 4.2 Pagina canal (foarte important) [x] player / embed zone stabil [x] selector de surse multiple [x] auto-fallback surse (MVP: timeout/error pe iframe) [x] indicator "Acum / Urmeaza" [~] program pe 7 zile pentru canal [~] scor / health surse [~] badge-uri sursa (verificata, fara redirect etc.) [x] buton Favorite [x] buton Reminder [ ] raportare problema sursa ("nu merge", "buffering", "audio", "continut gresit") [x] share link (deep link) [x] canale similare 4.3 Search / descoperire [x] cautare canale [~] cautare universala (canale + emisiuni din EPG azi implementate; filme/sport intent inca nu) [ ] autosuggest live [ ] typo tolerance / alias / denumiri vechi [x] intent shortcuts ("meciuri azi", "filme diseara", "stiri live") [x] rezultate cu actiuni rapide (vezi canal / reminder / program) - MVP in `/cauta` [x] shortcut tastatura (/, Ctrl+K) 4.4 Program TV / EPG [x] import EPG [x] mapare EPG la canale [x] "Acum la TV" din EPG real (Cinemagia prioritar + RDSLive fallback) [ ] "Incep in curand" [x] "Diseara" (EPG real, Cinemagia prioritar + RDSLive fallback) [ ] filtre pe gen / categorie / sport [ ] pagini program per canal / per zi [ ] highlight-uri (meciuri / premiere / recomandari) [x] remindere direct din EPG (MVP local + sync server-side pentru push) 4.5 Favorite / cont / sync [x] favorite locale (fara cont) [x] import/export favorite locale [ ] magic-link login (email) [ ] sync cloud pentru favorite [ ] ordonare favorite [ ] grupuri favorite (Sport, Stiri, Copii etc.) [~] preferinte utilizator (tema, start page, player options) [ ] istoric vizionare [ ] "Continua vizionarea" 4.6 Remindere / notificari [~] web push notifications [ ] email reminders [x] reminder cu X minute inainte (MVP local, configurabil 0/5/10/15/30 min) [x] reminder "a inceput acum" (MVP local, optional "notifica si la start") [ ] reminder recurent (optional) [ ] digest personalizat ("ce e diseara") [ ] (optional) Telegram reminders 4.7 Apps / acces rapid (retentie) [x] PWA complet (manifest + sw + shortcuts + offline shell) [x] pagina "Aplicatii" [~] instalare PWA cu onboarding clar [ ] Windows app (Tauri/Electron) - faza 2 [ ] ghid / wizard pentru pin in Taskbar/Desktop [ ] browser extension opt-in (new tab + quick search + reminders) - faza 3 [ ] Android / Android TV app - faza 3/4 4.8 Diferentiatori (idei noi) [~] auto-fallback inteligent cu retry si timeout [ ] scor sursa pe ISP/dispozitiv/orar (telemetry) [ ] homepage personalizat ("Pentru tine") [ ] colectii dinamice generate din EPG [x] "Cauta dupa context" (MVP pe `cauta.html`: topic + mod `acum/diseara/azi`) [ ] mod TV/Remote (tile mari) [ ] profil simplificat pentru familie/seniori [x] status public surse (transparenta) 4.9 SEO / continut / legal [~] URL-uri stabile pe canale [ ] redirect map pentru slugs vechi [ ] canonical intre domenii [ ] sitemap-uri separate (canale / categorii / program) [ ] schema.org (WebSite, ItemList, FAQ etc.) [x] pagini legale: termeni, privacy, cookies, DMCA, contact [x] pagini help / ghiduri [ ] pagini editoriale SEO (meciuri azi, filme diseara etc.) ================================================== 5) BACKOFFICE / ADMIN (OBLIGATORIU) ================================================== 5.1 Admin canale [~] CRUD canale [ ] categorii / tag-uri [ ] slug + alias + redirect [ ] logo / imagini [ ] ordine / ranking [ ] SEO metadata 5.2 Admin surse [~] CRUD surse per canal [ ] prioritate sursa (1..n) [ ] tip sursa (iframe, m3u8 etc.) [ ] status (active/degraded/disabled) [ ] restrictii pe device/geo (daca e nevoie) [ ] override manual "sursa primara" [ ] note tehnice per sursa 5.3 Health checks / QA surse [x] job periodic de verificare [x] uptime / latency tracking [x] detectare esec si auto-deprioritizare [x] dashboard health (admin MVP: coverage + health per provider/categorie) [ ] istoric incidente 5.4 Admin EPG [x] import surse EPG [x] mapare canal <-> EPG [ ] corectii manuale [ ] highlight-uri editoriale 5.5 Moderare feedback [ ] inbox rapoarte useri [ ] categorii probleme [ ] status rezolvare [ ] SLA intern (optional) ================================================== 6) TEHNIC / ARHITECTURA (GREENFIELD) ================================================== [ ] arhitectura: modular monolith (start) [ ] frontend SSR/SEO + UI interactiv [ ] API REST [ ] DB (PostgreSQL) [ ] cache (Redis) [~] queue/jobs (health checks, EPG, notificari) [ ] search index (start simplu -> upgrade ulterior) [ ] observability (logs, metrics, error tracking) [ ] feature flags [ ] analytics events + KPI dashboard ================================================== 7) STRUCTURA PAGINI (URL MAP DE START) ================================================== [x] / [x] /cauta (MVP: canale + emisiuni din EPG azi) [x] /acum-la-tv [x] /program-tv [x] /program-tv-azi [x] /program-tv-diseara [~] /program-tv-maine [x] /canale [~] /canale/{slug} [x] /radio [x] /sport [x] /stiri [x] /filme [x] /documentare [x] /copii [x] /muzica [x] /colectii [~] /colectii/{slug} [x] /favorite [x] /remindere (MVP local storage + management) [x] /cont [x] /setari [x] /p/aplicatii [x] /p/ajutor [x] /p/contact [x] /p/termeni-si-conditii [x] /p/politica-de-confidentialitate [x] /p/cookies [x] /p/dmca [x] /p/status-surse ================================================== 8) CE PROPUN SA INCEPEM (ORDINE RECOMANDATA) ================================================== Faza 0 - Decizii (inainte de cod) [ ] Confirmam cool-tv-ro.com ca produs principal [ ] Confirmam lista initiala de canale + categorii [~] Confirmam politica surse (RundleTV/canale-tv.com/rdslive/tvron/cool-tv.net/tvonline24) [ ] Confirmam limite legale/DMCA si modul de operare [ ] Confirmam directia design mono black/white Faza 1 - MVP care produce valoare rapid [~] 1. Structura proiect (web + api + admin minimal) [x] 2. Model date: canale, surse, categorii [~] 3. Import initial canale + surse (manual/semi-auto + tvonline24 fallback) [~] 4. Homepage + categorii + pagina canale [x] 5. Pagina canal cu selector surse [x] 6. Logica prioritate surse (RundleTV -> canale-tv.com -> rdslive -> tvron -> cool-tv.net -> tvonline24) [~] 7. Auto-select prima sursa valida [x] 8. Favorite locale [x] 9. PWA basic (manifest + install) [~] 10. SEO basic (titles, schema, sitemap) Faza 2 - Diferentiere si retentie [~] 11. EPG + Acum/Diseara (Cinemagia prioritar + RDSLive fallback in builder) [~] 12. Search universal [~] 13. Health checks + scor surse [ ] 14. Magic-link + sync favorite [~] 15. Remindere + notificari (MVP local + Web Push server MVP subscribe/test + server-side sync/dispatch) [~] 16. Status surse public (MVP pagina publica + filtre + KPI + provider summary) Faza 3 - Moat [ ] 17. Auto-fallback inteligent [ ] 18. Personalizare homepage [ ] 19. Colectii dinamice [ ] 20. Windows app / shortcut wizard [ ] 21. Extension browser opt-in ================================================== 9) DECIZII DE APROBAT (BIFAM PE RAND) ================================================== [ ] Domeniu principal final: cool-tv-ro.com [ ] Brand naming pe UI: "Cool TV RO" / "CoolTV.ro" / alta varianta [ ] Tema implicita: Black [ ] Tema secundara: White [ ] Accent functional (ex: verde pentru LIVE) - da/nu [~] Surse automatizate in ordinea stabilita [ ] Auto-fallback activ by default [x] PWA in MVP [ ] Magic-link in Faza 2 [ ] Windows app in Faza 3 ================================================== 10) NOTE DE PARCURS (completam pe masura ce lucram) ================================================== - Ultimul status: MVP public initial pornit (homepage + pagina canal + date demo + PWA basic). - Ce s-a aprobat: - Ce s-a implementat: UI black/white cu toggle persistent, lista canale cu cautare/filtre, favorite locale (import/export), pagina canal demo cu surse, logica prioritate surse, PWA basic (manifest/sw/offline), admin minim (import provideri + build channels), importer semi-auto pentru rundletv/canale-tv/rdslive/tvron/cool-tv.net/tvonline24, fallback de matching tvonline24 prin Search API, extractor rdslive prin AJAX (`get_video_source`) cu alternative tab2/tab3, health checks persistente pe `channels.json` (status `ok/degraded/disabled`), scor sursa (health + latenta + istoric probe) persistat in `health.score`, ordonare surse dupa scor in interiorul providerului (pastrand prioritatea providerilor), afisare scor/latenta in UI player si admin, auto-fallback MVP in player (timeout/error pe iframe), channel-map.json pentru mapping, ingestie EPG real din `rdslive` (`/wp-content/uploads/epg/{epg_key}.json`) cu cache local si calcul `now/next/tonight/today`, homepage conectat la EPG real, pagini dedicate `acum-la-tv.html`, `program-tv-diseara.html`, `program-tv-azi.html`, pagina `cauta.html` (MVP) cu cautare in canale + emisiuni din EPG azi + cautare dupa context (topic + mod `acum/diseara/azi`) si chip-uri rapide, remindere locale (MVP) cu `localStorage` + notificari browser locale (cand pagina/app ruleaza), butoane reminder in pagina canal / cautare / pagini EPG si pagina `remindere.html` pentru management, setari locale reminder (lead 0/5/10/15/30 + optiune notificare la start), auto-seed `channel-map.json` din `RDSLive` + `Build Channels` extins la ~120 canale. - Ce s-a implementat (admin): editor web pentru `channel-map.json` (save + rebuild optional, aliasuri per provider, rand gol pentru adaugare rapida canal nou), actiune `Auto-seed RDSLive -> Map + Build` (creeaza canale noi + completeaza aliasurile `rdslive` la cele existente), `Health Checks Batch` (loturi 20/50 + `Run Next Batch` + batch-all) pentru seturi mari de canale, dashboard health/coverage (MVP) in admin pentru surse/EPG/provideri/categorii, actiune `EPG-only Refresh` (Cinemagia prioritar + RDSLive fallback) fara rebuild complet de surse + sumar `epg_refresh_summary` in admin. - Ce s-a implementat (public status): pagina `status-surse.html` (MVP) cu filtre dupa canal/categorie/provider/sanatate/sortare, KPI-uri publice, rezumat provideri (coverage + primar) si lista canale cu statusuri agregate pe surse + EPG acum/urmeaza; link integrat in navigatia paginilor principale. - Ce s-a implementat (homepage status): sectiune `Status Platforma` pe `index.html` cu KPI-uri agregate (canale / sursa OK / EPG / health ok/disabled) + rezumat provideri (coverage + primar), alimentata din `channels.json` / `health_summary`. - Ce s-a implementat (EPG Cinemagia): importer index `cinemagia` (desktop `program-tv`), parser EPG HTML din `m.cinemagia.ro/program-tv/{canal}/` cu cache local, detectie/fix pentru pagina implicita pe ziua anterioara (refetch pe tab-ul zilei curente), deduplicare sloturi repetate in `ShowList`, integrare in builder cu prioritate `cinemagia_epg` si fallback `rdslive_epg`. - Ce s-a implementat (UX/UI polish): homepage quick queries (`stiri acum`, `sport diseara` etc.), shortcut cautare `Ctrl/Cmd+K` si `/`, hover/elevation polish pe carduri (home/search/EPG/status), suport `prefers-reduced-motion`, copy UI actualizat pentru EPG (Cinemagia + RDSLive fallback). - Ce s-a implementat (web push MVP): endpointuri PHP `/api/push/*` (VAPID auto-gen, `public_key`, `status`, `subscribe`, `unsubscribe`, `send_test`), stocare file-based in afara webroot (`/var/push/*.json`, cu migrare automata din vechiul `public_html/data/push`), integrare UI in `remindere.html` (activare/dezactivare/test/refresh status), helper-e Web Push in `common.js` si handler `push`/`notificationclick` in `sw.js`. - Ce s-a implementat (push reminders server-side MVP): API `/api/reminders/status.php` + `/api/reminders/sync.php` pentru sincronizarea reminderelor locale pe endpoint-ul Web Push al browserului, stocare file-based in `var/push/reminders.json`, dispatcher server-side `cooltv_push_dispatch_due_reminders()` (pentru admin/cron) + script CLI `scripts/dispatch_push_reminders.php`, integrare in admin (`Dispatch Push Reminders` + dashboard sumar), buton `Sync remindere pe server` in `remindere.html` si autosync la activarea Web Push / page load / stergere remindere. - Ce s-a implementat (ops/cron): modul `job status` file-based (`var/jobs/status.json`) cu durate/istoric/erori consecutive pentru joburi (`epg_refresh_only`, `push_reminder_dispatch`, `maintenance_cycle`), afisare `Cron / Jobs Status` in admin, scripturi CLI `scripts/epg_refresh_only.php` si `scripts/run_maintenance.php` (EPG refresh + dispatch push reminders) pentru rulare programata in cron. - Ce s-a implementat (ops/cron hardening): lock-uri file-based pentru joburi (`channels_write`, `push_reminders_write`) ca sa previna rularile paralele pe `channels.json` / remindere push, aplicate in scripturile CLI si actiunile admin (`EPG-only Refresh`, `Dispatch Push Reminders`), plus afisare lock status si exemple `cron` recomandate in admin; script CLI `health_checks_all.php` (batch-all) cu lock + job status. - Ce s-a implementat (detaliu surse): `tvron` extractor multi-sursa (toate `player.php` de pe pagina canal) + decode `player.php` -> iframe final / HLS `Playerjs file` / DASH `Clappr source`, integrare `cool-tv.net` (decode `oko1..okoN` -> player URLs), canonical `canale-tv.com` (fara duplicat `.net`), player nativ HLS/DASH pe site-ul nostru pentru sursele directe (rundletv/rdslive/tvron HLS/DASH unde exista). - Ce s-a verificat (tvonline24): unlock API functioneaza cu sesiune+origin/referer, dar playerul returneaza HTML/JS obfuscat; extragerea sursei native nu e robusta. Integrabil ca provider fallback prin embed/page URL. - Ce e blocat: extragere directa completa pentru canale-tv (pagina obfuscata), extragere nativa tvonline24 (unlock+obfuscare), EPG complet multi-provider (acum Cinemagia prioritar + RDSLive fallback; lipsesc alti provideri/normalizare avansata), auto-fallback avansat (detectie playback real cross-origin), scor de calitate avansat pe ISP/dispozitiv, sync cloud (cont magic-link) pentru favorite/remindere, push reminders server-side cu payload dedicat (momentan push gol/notificare generica), email reminders. - Observatie health-check: unele surse HLS rdslive raspund 403 la probe directe; fallback-ul pe alternative iframe (tab3) ramane util si trebuie pastrat. - Observatie progres health: `health checks` complet rulat pe setul extins (`120/120` canale), sumar curent full: `ok=134`, `degraded=1`, `disabled=160` (surse + alternative). - Observatie build: `build_channels` este heavy deoarece reextrage surse + EPG pentru toate canalele; pentru update rapid EPG foloseste `EPG-only Refresh` (mai ales dupa ajustari parser Cinemagia), iar pentru schimbari de surse/mapper ruleaza rebuild complet si apoi (optional) health checks batch. - Observatie ops: nu rula in paralel joburile care scriu `channels.json` (`EPG-only Refresh`, `Build Channels`, `maintenance_cycle`) ca sa eviti overlap; ruleaza serial in cron. - Urmatorul pas: optimizeaza/afiseaza statusul pe homepage/cautare (agregat + badge-uri extinse), apoi treci la remindere sync cloud/web push real + scor sursa avansat (raportari useri + eventual telemetry ISP/dispozitiv).