Lumia

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.

lumia.local/articles

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.

  1. Lance la stack

    Clone, copie le .env.example, renseigne les secrets, docker compose up -d.

  2. Crée ton compte

    Au premier lancement, l'app déroule l'onboarding : compte administrateur puis limites de l'instance.

  3. Amène tes flux

    Import OPML depuis Feedly, ou ajout d'un flux par URL. Le worker enrichit au fil de l'eau.

  4. 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 jamais domain/.
  • WCAG 2.2 AA visé : navigation clavier, contrastes mesurés, prefers-reduced-motion respecté.