diff --git a/README.md b/README.md index 17c30c7..965f3cf 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,10 @@ This demo runs with sample XMLTV feeds to showcase the interface. - 📡 **Multi-EPG sources** — configure multiple EPG/M3U sources, switch from the topbar - 👤 **Personal EPG** — optionally let visitors use your instance with their own EPG/M3U URLs (saved in localStorage) - 🔍 **Search** — filter the grid by channel name or program title/synopsis (debounced) +- ⭐ **Favorites** — pin channels to the top of the grid, persisted in localStorage - 🌍 **i18n** — auto-detects browser language, supports EN / FR / ES (add your own in `locales/`) -- ⚙️ **Guided setup** on first launch — no config files to edit manually +- ⚙️ **Re-editable setup** — protected by an admin key, no SSH required to update config +- 🔔 **Update notifications** — a badge appears in the topbar when a new release is available on GitHub - 🔄 **Auto-reload** EPG every 30 minutes - 0️⃣ **Zero JS dependencies** — vanilla PHP, hls.js loaded from CDN @@ -172,6 +174,8 @@ You can re-open the setup page at any time using the admin key generated during http://guide.your-domain.com/setup.php ``` +Enter your admin key to unlock the configuration form. The key is stored in `config.json` under `admin_key` — if you lose it, you can retrieve it there via SSH. + Or edit `config.json` directly: ```bash @@ -206,8 +210,9 @@ nano /var/www/gridtv/config.json ``` gridtv/ ├── index.php # Entry point -├── setup.php # First-launch + re-configuration page +├── setup.php # Setup + re-configuration (admin key protected) ├── proxy.php # HTTP→HTTPS stream proxy +├── version.json # Current version (used for update check) ├── config.example.json # Config template ├── Dockerfile ├── docker-compose.yml @@ -223,13 +228,24 @@ gridtv/ │ └── steampunk.css └── src/ ├── config.php # Config loader, migration, locale detection + ├── css/ # CSS modules (one file per feature) + │ ├── base.css # Variables, reset, global layout + │ ├── topbar.css # Topbar, nav, source switcher, theme selector + │ ├── grid.css # Grid, channels, programs, ruler, tooltip, loading + │ ├── mobile.css # Mobile list view + │ ├── player.css # HLS PiP player + │ ├── modals.css # Personal EPG modal + │ ├── search.css # Search bar + highlight + │ ├── program.css # Program info modal + midnight marker + │ ├── favorites.css# Favorite button + separator + │ └── updater.css # Update notification badge ├── tpl/ # HTML templates - │ ├── head.php # DOCTYPE, , CSS + │ ├── head.php # DOCTYPE, , includes CSS modules │ ├── topbar.php # Topbar (nav, source switcher, search, theme) │ ├── grid.php # Grid + mobile + PiP + overlays │ ├── modals.php # Program info modal + Personal EPG modal │ └── footer.php # JS modules loader, - └── js/ # JavaScript modules + └── js/ # JavaScript modules (one file per feature) ├── config.js # Constants + PHP-injected vars (incl. locale) ├── utils.js # Helpers, clock, EPG fetch ├── epg.js # Grid rendering @@ -241,6 +257,8 @@ gridtv/ ├── themes.js # Theme switcher ├── search.js # Search + filter (debounced) ├── program.js # Program info modal + IMDb link + ├── favorites.js # Favorites (localStorage) + ├── updater.js # GitHub update checker └── live.js # Live updates + responsive ``` @@ -345,15 +363,16 @@ GNU Affero General Public License v3.0 (AGPLv3) - Theme system (4 built-in themes) - Multi-EPG sources with topbar switcher - Personal EPG (localStorage) -- Modular codebase (src/tpl + src/js) +- Modular codebase (src/tpl + src/js + src/css) - Docker support - **Search** — filter grid by channel name or program title/synopsis (debounced) - **Date in timebar** — midnight markers with day/date in the ruler - **Program popup** — full details + IMDb search link on any program click - **i18n** — EN / FR / ES with browser auto-detection, extensible via locales/ +- **Favorites** — pin channels to the top of the grid (localStorage) +- **Setup re-editable** — protected by an admin key, auto-generated on first setup +- **Update notifications** — topbar badge links to latest GitHub release ### 🔜 Coming soon -- **Favorites** — pin channels to the top of the grid (localStorage) -- **Setup re-editable** — reopen setup.php with an admin key, no SSH required - **Dark/Light auto mode** — follow system preference when using the default theme - **Grid export** — export today's schedule as PDF or image