# kaubuntu.re - Plateforme Multimédia

Une plateforme multimédia conçue pour diffuser du contenu à partir d'une instance PeerTube.

## Description

kaubuntu.re est une interface web responsive qui permet de consulter et rechercher des vidéos hébergées sur une instance PeerTube. La plateforme est conçue pour être légère, facilement déployable sur un serveur mutualisé, et optimisée pour les appareils mobiles et desktop.

## Fonctionnalités

- Affichage des vidéos à la une et récentes
- Navigation par catégories
- Lecture de vidéos
- Recherche de contenu
- Interface responsive (mobile et desktop)
- Intégration avec une instance PeerTube
- **Progressive Web App (PWA)** avec installation native
- Mode hors ligne avec cache intelligent
- Détection automatique d'état de connexion

## Technologies utilisées

- HTML5
- CSS3 avec Media Queries pour le responsive design
- PHP pour le backend
- JavaScript pour les interactions côté client
- **Service Worker** pour le cache offline et PWA
- **Web App Manifest** pour l'installation native
- Bibliothèques externes via CDN:
  - Font Awesome (icônes)
  - jQuery

## Structure du projet

```
├── css/
│   ├── styles.css
│   ├── video-page.css
│   ├── categories.css
│   └── search.css
├── img/
│   ├── categories/
│   ├── video-thumbnails/
│   └── channels/
├── js/
│   └── main.js
├── includes/
│   ├── header.php
│   ├── footer.php
│   ├── mobile-menu.php
│   ├── featured-videos.php
│   ├── recent-videos.php
│   ├── categories.php
│   └── pwa-init.php
├── index.php
├── video.php
├── categories.php
├── search.php
├── sw.js                    # Service Worker pour PWA
├── site.webmanifest         # Manifest PWA
├── browserconfig.xml        # Configuration Windows
└── README.md
```

## Installation

1. Clonez ce dépôt
2. Configurez votre serveur web (Apache, Nginx, etc.) pour pointer vers le répertoire racine
3. **Important :** Assurez-vous que votre serveur supporte HTTPS (requis pour PWA)

## Configuration

Le site utilise un système de configuration en deux parties :
- `includes/config.php` : La configuration de base (versionnée)
- `includes/config.local.php` : Votre configuration locale (non versionnée)

Pour configurer votre environnement local :

1. Copiez le fichier d'exemple vers le fichier local :
   ```
   cp includes/config.local.php.sample includes/config.local.php
   ```

2. Modifiez `includes/config.local.php` selon vos besoins :
   - URL de l'instance PeerTube
   - Clé API
   - Catégories à afficher
   - Nombre de vidéos par section
   - etc.

Les modifications apportées à `config.local.php` ne seront pas suivies par Git, ce qui vous permet de personnaliser votre instance sans affecter le code source principal.

## Personnalisation des catégories

Pour personnaliser les catégories affichées sur la page d'accueil, modifiez la constante `PRIORITY_CATEGORIES` dans votre fichier `config.local.php` :

```php
define('PRIORITY_CATEGORIES', [
    11 => 'Actualité & Politique',
    14 => 'Activisme',
    15 => 'Science & Technologie',
    1 => 'Musique',
    // Ajoutez d'autres catégories selon vos besoins
]);
```

- Les clés sont les IDs des catégories dans PeerTube
- Les valeurs sont les noms personnalisés que vous souhaitez afficher
- L'ordre dans le tableau détermine l'ordre d'affichage sur la page

## Personnalisation

Vous pouvez personnaliser l'apparence de la plateforme en modifiant les fichiers CSS dans le dossier `css/`. Pour changer le logo et les couleurs principales:

1. Remplacez le fichier `img/logo.png` par votre propre logo
2. Modifiez les couleurs dans `css/styles.css`

## Personnalisation du sitemap, robots.txt et webmanifest

Les fichiers `sitemap.xml`, `robots.txt` et `site.webmanifest` contiennent le nom de domaine codé en dur (`kaubuntu.re`). Pour les adapter à votre domaine :

1. Copiez les fichiers samples pour créer vos propres versions :
   ```
   cp sitemap.xml.sample sitemap.xml
   cp robots.txt.sample robots.txt
   cp site.webmanifest.sample site.webmanifest
   ```

2. Remplacez `VOTRE-DOMAINE` par votre nom de domaine réel dans ces fichiers.

Ces fichiers sont listés dans le `.gitignore` afin que vos modifications ne soient pas suivies par Git, ce qui vous permet de personnaliser votre instance sans affecter le code source principal.

## Progressive Web App (PWA)

Cette plateforme est une PWA complète offrant :

### Fonctionnalités PWA

- **Installation native** : Bouton d'installation automatique dans l'interface
- **Mode hors ligne** : Cache intelligent des pages et ressources visitées
- **Détection d'état** : Indicateur visuel en cas de perte de connexion
- **Performance** : Chargement instantané des ressources en cache
- **Responsive** : Interface adaptée pour l'utilisation en application mobile

### Comment installer l'application

1. **Automatique** : Un bouton "Installer" apparaît dans le header lors de la première visite
2. **Manuel** : 
   - **Chrome/Edge** : Menu → "Installer kaubuntu.re"
   - **Safari iOS** : Partager → "Ajouter à l'écran d'accueil"
   - **Firefox Android** : Menu → "Installer"

### Compatibilité PWA

- ✅ Chrome/Edge (Android/Desktop)
- ✅ Safari (iOS 11.3+)
- ✅ Firefox (Android)
- ✅ Samsung Internet

### Fichiers PWA

- `sw.js` : Service Worker gérant le cache et mode offline
- `site.webmanifest` : Configuration de l'application (nom, icônes, etc.)
- `browserconfig.xml` : Support des tuiles Windows

## Déploiement

Pour déployer sur un serveur mutualisé:

1. Assurez-vous que votre hébergeur supporte PHP (version 7.0 minimum recommandée)
2. **Configurez HTTPS** (obligatoire pour les fonctionnalités PWA)
3. Transférez tous les fichiers via FTP dans le répertoire racine de votre site
4. Vérifiez que les permissions des fichiers sont correctement définies (644 pour les fichiers, 755 pour les dossiers)
5. Configurez votre domaine pour pointer vers le dossier où vous avez installé l'application
6. Testez l'installation PWA via les outils de développement du navigateur

## Développement

Si vous souhaitez contribuer au développement:

1. Créez une branche pour vos modifications: `git checkout -b ma-nouvelle-fonctionnalité`
2. Committez vos changements: `git commit -m 'Ajout d'une nouvelle fonctionnalité'`
3. Poussez vers la branche: `git push origin ma-nouvelle-fonctionnalité`
4. Soumettez une pull request

## License

Copyright (C) 2025 Cédric Famibelle-Pronzola & Ka-Ubuntu

### FR

Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la licence publique générale GNU Affero publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre choix) toute version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou d'ADAPTATION À UN USAGE PARTICULIER. Voir la licence publique générale GNU Affero pour plus de détails.

Vous devriez avoir reçu une copie de la licence publique générale GNU Affero avec ce programme. Si ce n'est pas le cas, consultez https://www.gnu.org/licenses/.

### EN

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

## Contact

Pour toute question ou suggestion, veuillez nous contacter à [contact@kaubuntu.re](mailto:contact@kaubuntu.re).
