Readme update

This commit is contained in:
Johnnybegood90
2026-03-12 13:18:13 +01:00
parent de7ef1645b
commit 54265a2d9f
+32 -4
View File
@@ -27,16 +27,20 @@ This demo runs with sample XMLTV feeds to showcase the interface.
## ✨ Features
- 🎛️ **Timeline grid** — horizontal EPG-style view with a live "now" indicator
- 📅 **Date in timebar** — midnight markers show the day/date so you always know where you are
- 📱 **Responsive** — optimized list view on mobile
- ⏱️ **Live progress bar** on the currently airing program
- 🕶️ **Past programs** automatically dimmed
- 📋 **Hover tooltip** — title, synopsis, season/episode, schedule, duration
- 🎬 **Program popup** — click any program for full details + IMDb search link
- 🔗 **One-click copy** buttons for EPG & M3U URLs in the topbar
- ▶️ **Built-in HLS player** — click any channel or live program to watch in a PiP overlay
- 🔀 **HTTP→HTTPS proxy** — streams Tunarr over HTTP transparently from an HTTPS page
- 🎨 **Theme system** — drop a CSS file in `themes/` and it appears in the menu automatically
- 📡 **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)
- 🌍 **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
- 🔄 **Auto-reload** EPG every 30 minutes
- 0️⃣ **Zero JS dependencies** — vanilla PHP, hls.js loaded from CDN
@@ -208,21 +212,25 @@ gridtv/
├── Dockerfile
├── docker-compose.yml
├── .gitignore # config.json excluded
├── locales/ # i18n translation files
│ ├── en.json
│ ├── fr.json
│ └── es.json
├── themes/ # CSS theme files
│ ├── default.css
│ ├── magazine.css
│ ├── cyberpunk.css
│ └── steampunk.css
└── src/
├── config.php # Config loader + migration
├── config.php # Config loader, migration, locale detection
├── tpl/ # HTML templates
│ ├── head.php # DOCTYPE, <head>, CSS
│ ├── topbar.php # Topbar (nav, source switcher, search, theme)
│ ├── grid.php # Grid + mobile + PiP + overlays
│ ├── modals.php # Personal EPG modal
│ ├── modals.php # Program info modal + Personal EPG modal
│ └── footer.php # JS modules loader, </body></html>
└── js/ # JavaScript modules
├── config.js # Constants + PHP-injected vars
├── config.js # Constants + PHP-injected vars (incl. locale)
├── utils.js # Helpers, clock, EPG fetch
├── epg.js # Grid rendering
├── mobile.js # Mobile list view
@@ -232,6 +240,7 @@ gridtv/
├── player.js # HLS PiP player
├── themes.js # Theme switcher
├── search.js # Search + filter (debounced)
├── program.js # Program info modal + IMDb link
└── live.js # Live updates + responsive
```
@@ -296,6 +305,22 @@ GridTV parses the standard **XMLTV format**. Tested with:
- ✅ [Jellyfin](https://jellyfin.org/)
- ✅ Any XMLTV-compliant source
---
## 🌍 Internationalization
GridTV auto-detects the visitor's browser language and serves the matching locale. Supported out of the box: **English**, **French**, **Spanish**.
To add a new language, create a file in `locales/` based on an existing one:
```bash
cp locales/en.json locales/de.json
# then translate the values
```
GridTV will automatically pick it up for browsers with that language set — no code changes needed.
---
## 🤝 Contributing
@@ -322,7 +347,10 @@ GNU Affero General Public License v3.0 (AGPLv3)
- Personal EPG (localStorage)
- Modular codebase (src/tpl + src/js)
- Docker support
- **Search** — filter grid by channel name or program title/synopsis
- **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/
### 🔜 Coming soon
- **Favorites** — pin channels to the top of the grid (localStorage)