146 lines
5.7 KiB
Markdown
146 lines
5.7 KiB
Markdown
<p align="center"><img src="public/images/logo.png" width="360" alt="BloomFeed"></p>
|
|
|
|
<p align="center">
|
|
Un agrégateur RSS personnel et auto-hébergé, avec lecture approfondie intégrée.<br>
|
|
<em>A personal, self-hosted RSS aggregator with a built-in reader.</em>
|
|
</p>
|
|
|
|
<p align="center"><img src="docs/screenshots/home-light.png" width="800" alt="Page d'accueil de BloomFeed"></p>
|
|
|
|
## Qu'est-ce que BloomFeed ?
|
|
|
|
BloomFeed centralise vos flux RSS/Atom préférés dans une interface simple. Quand un article vous
|
|
intéresse, BloomFeed récupère la page source, en extrait le contenu principal et l'affiche
|
|
directement dans l'application — plus besoin d'ouvrir le site d'origine.
|
|
|
|
BloomFeed est pensé pour être **auto-hébergé par une personne ou un foyer** : le premier compte
|
|
créé devient le compte propriétaire, qui peut ensuite inviter des proches (création directe de
|
|
comptes) ou ouvrir les inscriptions publiques depuis le menu Paramètres.
|
|
|
|
## Fonctionnalités
|
|
|
|
- Ajout de flux RSS/Atom, suivi des non-lus, favoris.
|
|
- Lecture approfondie intégrée : extraction du contenu principal (via
|
|
[Readability](https://github.com/fivefilters/readability.php)) converti en Markdown, sans
|
|
quitter BloomFeed.
|
|
- Catalogue de flux façon "market" : une sélection de flux embarquée avec l'application
|
|
([resources/data/bloomflux.json](resources/data/bloomflux.json)), à ajouter en un clic.
|
|
- Multi-comptes : le propriétaire crée des comptes ou ouvre/ferme les inscriptions d'un clic.
|
|
- Interface disponible en **français, anglais, espagnol et allemand** (sélecteur en haut de page,
|
|
préférence mémorisée par utilisateur).
|
|
- Récupération périodique des flux via une tâche planifiée.
|
|
- Thème clair/sombre.
|
|
|
|
## Aperçu
|
|
|
|
| Tableau de bord | Lecteur intégré |
|
|
|---|---|
|
|
|  |  |
|
|
|
|
| Catalogue de flux | Mode sombre |
|
|
|---|---|
|
|
|  |  |
|
|
|
|
## Stack technique
|
|
|
|
- [Laravel 13](https://laravel.com) (PHP 8.4)
|
|
- MariaDB
|
|
- CSS/JS écrits à la main, sans étape de build (pas de Node/Vite/Tailwind)
|
|
- Docker Compose pour le déploiement
|
|
|
|
## Installation (auto-hébergement)
|
|
|
|
### Prérequis
|
|
|
|
- Un serveur Linux avec **Docker** et le plugin **Docker Compose**.
|
|
- Le port **7081** libre (modifiable dans `docker-compose.yml`).
|
|
- Optionnel : un nom de domaine + reverse proxy (Nginx, Caddy, Traefik…) pour le HTTPS —
|
|
l'application détecte automatiquement les en-têtes `X-Forwarded-*`.
|
|
|
|
### Étapes
|
|
|
|
```bash
|
|
git clone https://git.eldorianet.work/esteban/BloomFeed-RSS bloomfeed
|
|
cd bloomfeed
|
|
bash scriptsite.sh
|
|
```
|
|
|
|
Le script de déploiement :
|
|
|
|
1. libère le port 7081 si nécessaire ;
|
|
2. clone ou met à jour le code dans `/opt/bloomfeed` ;
|
|
3. crée le `.env` depuis `.env.example` s'il n'existe pas, et y génère les secrets manquants
|
|
(`APP_KEY`, `DB_PASSWORD`, `DB_ROOT_PASSWORD`) — ils ne sont **jamais** régénérés ensuite ;
|
|
4. construit les images et démarre les conteneurs (application, planificateur, MariaDB) ;
|
|
5. attend que les migrations de l'entrypoint soient terminées et vérifie que l'application répond.
|
|
|
|
Ouvrez ensuite `http://votre-serveur:7081` et créez le **compte propriétaire** — les inscriptions
|
|
publiques se referment automatiquement après.
|
|
|
|
### Mise à jour
|
|
|
|
Relancez simplement `bash scriptsite.sh` : il récupère les derniers changements et reconstruit
|
|
la stack sans toucher à vos données.
|
|
|
|
### Désinstallation
|
|
|
|
```bash
|
|
bash uninstall.sh # arrête et supprime les conteneurs (données conservées)
|
|
bash uninstall.sh --purge # supprime aussi la base de données et le storage (confirmation demandée)
|
|
bash uninstall.sh --purge --purge-source # supprime aussi /opt/bloomfeed et le .env
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Comptes et inscriptions
|
|
|
|
Le compte propriétaire dispose d'un menu **Paramètres** dans la barre de navigation :
|
|
|
|
- **Créer un compte** directement (nom, e-mail, mot de passe) pour un proche, sans rien ouvrir
|
|
au public ;
|
|
- **Ouvrir / fermer les inscriptions publiques** d'un clic — quand elles sont ouvertes, le bouton
|
|
"Créer un compte" réapparaît sur la page d'accueil et la page de connexion.
|
|
|
|
### Langue
|
|
|
|
Chaque visiteur ou utilisateur choisit sa langue (FR, EN, ES, DE) via le sélecteur en haut de
|
|
page. Le choix est mémorisé en session pour les visiteurs et enregistré sur le profil pour les
|
|
utilisateurs connectés. La langue par défaut de l'instance se règle avec `APP_LOCALE` dans `.env`.
|
|
|
|
### Variables d'environnement principales
|
|
|
|
| Variable | Rôle | Défaut |
|
|
|---|---|---|
|
|
| `APP_URL` | URL publique de l'instance (importante derrière un reverse proxy HTTPS) | `http://localhost:7081` |
|
|
| `APP_LOCALE` | Langue par défaut (`fr`, `en`, `es`, `de`) | `fr` |
|
|
| `DB_*` | Connexion MariaDB (générés par le script) | — |
|
|
|
|
### Catalogue de flux
|
|
|
|
L'onglet **Catalogue** propose une sélection de flux pré-faits (actualités, tech, développement,
|
|
IT/sysadmin, sécurité, sciences…) à ajouter en un clic. La liste vit dans
|
|
[resources/data/bloomflux.json](resources/data/bloomflux.json), versionnée avec le code : pour
|
|
l'enrichir, éditez le fichier et redéployez — aucun service externe n'est nécessaire.
|
|
|
|
```json
|
|
{ "title": "Nom du flux", "url": "https://exemple.com/rss.xml", "category": "Tech", "lang": "fr", "description": "Courte description." }
|
|
```
|
|
|
|
## Développement local
|
|
|
|
Prérequis : PHP 8.3+ et [Composer](https://getcomposer.org).
|
|
|
|
```bash
|
|
composer install
|
|
cp .env.example .env
|
|
# Passer DB_CONNECTION=sqlite dans .env pour un dev local sans MariaDB
|
|
touch database/database.sqlite
|
|
php artisan key:generate
|
|
php artisan migrate
|
|
php artisan serve
|
|
```
|
|
|
|
## Licence
|
|
|
|
[MIT](LICENSE).
|