Antigravity AgentandClaude Opus 5.5 03e57e4308 fix(backend): harden security and speed up feeds and article API
Security:
- WebSocket events are routed to their owner only (no cross-user leak);
  hub close is idempotent (fixes double-close panic), adds ping/pong and
  write deadlines.
- Session tokens stored as SHA-256 (migration 008 keeps sessions valid);
  single-query auth middleware puts the user in the request context.
- Client IP only trusts X-Forwarded-For from TRUSTED_PROXIES; rate limiter
  map is bounded; per-user limit on AI summaries.
- Argon2id at OWASP minimum with a concurrency cap; constant-time login
  for unknown emails; atomic first-admin bootstrap; REGISTRATION_ENABLED.
- CSP/HSTS/COOP headers, same-origin guard on mutations, body size limits,
  wider SSRF denylist, bounded feed/page/AI response reads, generic errors.
- Upgrade chi, pgx, x/net, x/text, x/crypto (known CVEs); commit go.sum.

Performance:
- List endpoints return a plain-text excerpt and reading time instead of
  full HTML; content is sanitized once at ingest (legacy rows backfilled).
- Keyset pagination on (sort_at, id) with matching partial indexes;
  redundant indexes dropped (migration 007).
- Fetcher: bounded worker pool, conditional GET (ETag/Last-Modified),
  exponential backoff, dedupe before insert, column-safe truncation,
  retention-aware ingest, per-user refresh coalescing.
- Read/favorite/read-all are single ownership-scoped statements.
- gzip compression, immutable caching for hashed assets, path-safe SPA
  handler, server timeouts; expired sessions purged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 07:34:08 +02:00

🌿 FlowReader

Le calme dans le chaos de l'information. Un agrégateur RSS minimaliste, intelligent et économe, conçu pour ceux qui veulent reprendre le contrôle de leur veille.

FlowReader Dashboard

Go Version React Version Docker License

✨ Pourquoi FlowReader ?

FlowReader n'est pas juste un autre lecteur RSS. C'est une expérience de lecture repensée pour l'efficacité et le plaisir. Fini le scroll infini anxiogène, place à la concentration.

🧘 Mode Focus

Une interface immersive inspirée des applications de rencontre pour trier vos flux à la vitesse de la pensée.

  • Swipe à droite : Article lu / archivé.
  • Swipe à gauche : Article gardé pour plus tard.
  • Double-clic : Lecture immédiate.

Mode Focus

🧠 Smart Digest (IA)

Ne perdez plus de temps sur les articles "clickbait".

  • FlowReader utilise l'IA (via OpenRouter) pour lire le contenu complet à votre place.
  • Il génère un résumé concis directement accessible depuis votre liste de lecture.
  • Identifiez en un coup d'œil si un article mérite votre temps.

Smart Digest

⚡ Performance & Sobriété

Conçu pour l'auto-hébergement respectueux des ressources.

  • Backend en Go : Ultra-rapide et compilé.
  • Frontend React 19 : Fluide et moderne.
  • < 150MB RAM : Tourne parfaitement sur un Raspberry Pi ou un NAS modeste.

🚀 Fonctionnalités Clés

  • PWA & Offline : Installez-le sur mobile comme une app native. Supporte la lecture hors-ligne.
  • Recherche Full-Text : Retrouvez n'importe quel article instantanément grâce à l'indexation PostgreSQL.
  • Design Organique : Thèmes "Organic Warmth" et "Deep Forest" (Mode Sombre) pour le confort des yeux.
  • Lecture Confortable : Mode lecteur distration-free intégré.
  • Agents IA (BMad) : Architecture conçue pour être maintenue et étendue par des agents IA.

📦 Installation

Option 1 : Docker Compose (Recommandé)

Le moyen le plus simple de démarrer.

# 1. Cloner le dépôt
git clone https://github.com/R0m1k3/FlowReader.git
cd FlowReader

# 2. Lancer la stack
docker-compose up -d

Accédez à http://localhost:8080.

Option 2 : Unraid

Un template dédié est fourni pour les utilisateurs d'Unraid.

  1. Copiez le fichier docker-compose.unraid.yaml sur votre serveur.

  2. Lancez le conteneur :

    docker-compose -f docker-compose.unraid.yaml up -d
    

    Note : Les données sont persistées dans /mnt/user/appdata/flowreader.

Configuration (Variables d'Environnement)

Variable Description Défaut
PORT Port du serveur 8080
DATABASE_URL Connexion PostgreSQL postgres://...
OPENROUTER_API_KEY Clé pour les résumés IA (Optionnel)

🛠️ Développement

Envie de mettre les mains dans le code ?

# Pré-requis : Go 1.22+, Node 20+, Docker

# 1. Lancer les services (DB)
make docker-up

# 2. Lancer le backend (avec reload)
make dev-backend

# 3. Lancer le frontend
make dev-frontend

🏗️ Architecture

graph TD
    Client[React Frontend] -->|API REST| Server[Go Backend]
    Server -->|SQL| DB[(PostgreSQL)]
    Server -->|Fetch| RSS[Flux RSS Externes]
    Server -->|Analyze| AI[OpenRouter API]

🤝 Contribuer

Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une Issue ou une Pull Request.

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

S
Description
No description provided
Readme
4.3 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 48.1%
Go 43.2%
CSS 4%
HTML 3.5%
Makefile 0.4%
Other 0.8%