Auto-hébergé · AGPL-3.0 · sans compte tiers
Éclaircis tes flux.
Lumia récupère tes flux RSS, retire des articles tout ce qui n'est pas l'article, en extrait les mots-clés et un résumé, puis apprend ce qui t'intéresse au fil de tes lectures. Sur ta machine, sans abonnement et sans revendre tes lectures.
La démo tourne entièrement dans ce navigateur, sur des articles fictifs : rien à installer, aucun compte. Pour ouvrir ta propre instance, enregistre son adresse dans Tester sur tes appareils.
Lire, pas trier
Un lecteur de flux passe son temps à te demander du travail : marquer, ranger, retrouver. Lumia fait ce travail à ta place et te rend le temps de lecture.
Articles complets et lisibles
Chaque page est re-téléchargée et re-extraite pour retirer menus, bandeaux et listes d'articles connexes. Il reste le texte, et le temps de lecture estimé.
Lu / non-lu qui tient
Compteurs de non-lus par flux et par dossier, filtre « non lus seulement », et « tout marquer comme lu » sur un flux ou un dossier — avec annulation.
Reprise de lecture
La position dans l'article est enregistrée côté serveur. Commencé sur l'ordinateur, fini dans le métro, au paragraphe près.
L'Étincelle
Un score de pertinence appris de tes votes, appliqué aux mots-clés, aux sources, aux auteurs et aux catégories. Glisse à droite, glisse à gauche.
Playlists et écoute
Des files d'articles ordonnées, durée totale affichée, lues à voix haute d'un bout à l'autre par la synthèse vocale du navigateur.
Import Feedly, traduction
Un export OPML s'importe tel quel, un dossier par catégorie. Une page quelconque s'enregistre par URL, et les articles étrangers se traduisent.
Chez toi, en quatre commandes
Une stack Docker : API, worker, PostgreSQL, Redis, Miniflux pour l'ingestion, et l'app web. Seuls l'API et l'app sortent sur le réseau, le reste reste interne.
-
Lance la stack
Clone, copie le
.env.example, renseigne les secrets,docker compose up -d. -
Crée ton compte
Au premier lancement, l'app déroule l'onboarding : compte administrateur puis limites de l'instance.
-
Amène tes flux
Import OPML depuis Feedly, ou ajout d'un flux par URL. Le worker enrichit au fil de l'eau.
-
Règle tes clés, si tu veux
Résumé et traduction enrichis par IA : chaque compte pose sa propre clé dans Réglages. Rien d'obligatoire.
git clone https://github.com/techmefr/lumia.git
cd lumia
cp .env.example .env
docker compose up -d
L'app répond alors sur http://localhost:8080, l'API sur
http://localhost:8000.
Tester sur tes appareils
La démo se contente de ce navigateur : elle sert à juger l'interface, la lecture et la synthèse vocale sur téléphone comme sur écran large, sur des articles fictifs. Une fois Lumia installé chez toi, enregistre ici l'adresse de l'app sur ton réseau local : le bouton « Ouvrir mon instance » pointera dessus, sur cet appareil.
Une IP seule suffit : le port 8080 et http:// sont ajoutés si tu
les omets. Depuis un téléphone du même réseau, indique l'IP locale de la machine qui fait
tourner Lumia — pas localhost, qui désignerait le téléphone lui-même.
L'adresse reste dans le localStorage de cet appareil et n'est envoyée à
personne.
Questions raisonnables
La démo envoie-t-elle quelque chose quelque part ?
Non. C'est le même front que l'app réelle, avec le client d'API remplacé par un jeu
d'articles fictifs stocké dans le localStorage du navigateur. Aucun serveur
derrière, donc aucun compte, aucune requête, et le bouton « Réinitialiser » remet la
démo à zéro. La synthèse vocale utilise les voix du système, comme dans l'app.
Faut-il payer une IA pour que ça marche ?
Non. L'extraction des mots-clés et le résumé sont calculés localement, sans appel externe. Une clé d'IA ou de DeepL reste optionnelle, se règle par compte, et sert uniquement au résumé enrichi et à la traduction.
Mes lectures sortent-elles de chez moi ?
Non. Base, worker et ingestion tournent dans ta stack. Aucun compte tiers, aucune télémétrie, et le code est sous AGPL-3.0 pour que ça reste vérifiable.
Je peux migrer depuis Feedly ou Pocket ?
Un export OPML Feedly s'importe tel quel. Pour Pocket, l'enregistrement d'une page par URL fait le même travail : la page est extraite et rangée dans un flux « Enregistrés ».
Et sur téléphone ?
L'app web est responsive et s'installe depuis le navigateur. La position de lecture étant côté serveur, on reprend un article commencé ailleurs.
Sous le capot
- Backend FastAPI + worker Python, PostgreSQL, Redis, Miniflux pour l'ingestion.
- Extraction TF-IDF avec racinisation FR/EN et résumé extractif, sans appel externe requis.
- Front SvelteKit + Svelte 5, Tailwind 4, servi en statique derrière nginx.
- Monorepo OSDD :
technical/n'importe jamaisdomain/. - WCAG 2.2 AA visé : navigation clavier, contrastes mesurés,
prefers-reduced-motionrespecté.