mirror of
https://github.com/R0m1k3/FlowReader.git
synced 2026-10-11 17:28:05 +02:00
163 lines
5.7 KiB
Markdown
163 lines
5.7 KiB
Markdown
---
|
|
stepsCompleted:
|
|
- step-01-init
|
|
- step-02-discovery
|
|
- step-03-success
|
|
- step-04-journeys
|
|
- step-05-domain
|
|
- step-06-innovation
|
|
- step-07-project-type
|
|
- step-08-scoping
|
|
- step-09-functional
|
|
- step-10-nonfunctional
|
|
- step-11-polish
|
|
inputDocuments: []
|
|
workflowType: 'prd'
|
|
documentCounts:
|
|
briefs: 0
|
|
research: 0
|
|
brainstorming: 0
|
|
projectDocs: 0
|
|
classification:
|
|
projectType: web_app
|
|
domain: general
|
|
complexity: low
|
|
projectContext: greenfield
|
|
---
|
|
|
|
# Product Requirements Document - FlowReader
|
|
|
|
**Author:** Michael
|
|
**Date:** 2026-02-04
|
|
**Status:** DRAFT (Polished)
|
|
|
|
## 1. Executive Summary
|
|
|
|
**FlowReader** est un lecteur de flux RSS/Atom auto-hébergé, conçu pour être l'antithèse des agrégateurs modernes surchargés. Sa proposition de valeur unique réside dans son équilibre radical : une **simplicité monacale pour l'utilisateur** (Zéro Friction, Lecture Plaisir) alliée à une **robustesse technique absolue** (Docker <150Mo RAM, Websockets temps réel, Multi-utilisateurs). Il vise à remplacer les solutions existantes par une expérience "Mobile First" fluide et instantanée.
|
|
|
|
---
|
|
|
|
## 2. Success Criteria
|
|
|
|
### User & Business Success
|
|
|
|
* **Zéro Friction** : Ajout d'un flux en < 2 clics et < 10 secondes.
|
|
* **Lisibilité "Livre"** : Transformation automatique des articles bruts en format épuré (sans pubs/distractions).
|
|
* **Adoption Quotidienne** : Utilisation > 5 min/jour en remplacement complet du lecteur précédent.
|
|
* **Mobile First** : Expérience tactile parfaite (swipe, transitions) utilisable d'une seule main.
|
|
|
|
### Technical Success
|
|
|
|
* **Performance Extrême** : Conteneur complet < 150 Mo RAM. Rendu article < 100ms.
|
|
* **Déploiement Instantané** : `docker-compose up` suffit pour tout lancer (Database + App + Proxy).
|
|
* **Temps Réel** : Les nouveaux articles apparaissent instantanément (Websockets) sans rechargement.
|
|
|
|
---
|
|
|
|
## 3. Product Scope & Roadmap
|
|
|
|
### Phase 1: MVP (Lancement)
|
|
|
|
L'objectif est une expérience de lecture complète et fiable pour plusieurs utilisateurs.
|
|
|
|
* **Cœur** : Gestion Flux (CRUD), Dashboard "Nouveautés", Vue Lecture Plaisir.
|
|
* **Architecture** : SPA (React/Vue), Backend (Go/Rust/Node?), SQLite, Docker.
|
|
* **Critique** : Authentification Multi-comptes, Websockets, Support OPML.
|
|
|
|
### Phase 2: Growth (Post-MVP)
|
|
|
|
* **IA** : Résumés automatiques via OpenRouter.
|
|
* **Organisation** : Dossiers, Tags, Recherche Full-text.
|
|
* **Filtres** : Règles de filtrage et de mise en sourdine.
|
|
|
|
### Phase 3: Vision (Futur)
|
|
|
|
* **Écosystème** : API Publique, Apps natives iOS/Android, Fédération ActivityPub.
|
|
|
|
---
|
|
|
|
## 4. User Journeys
|
|
|
|
### J1: Le "Rituel du Matin" (Utilisateur Principal)
|
|
|
|
* **Contexte** : 15 min de libre, mobile.
|
|
* **Flux** : Michael ouvre l'app → Dashboard "Nouveautés" (flux agrégés) → Tape sur un article → Lecture immersive (sans distraction) → Swipe article suivant → Message "Tout lu" satisfaisant.
|
|
* **Valeur** : Efficacité et plaisir de lecture immédiat.
|
|
|
|
### J2: Le Nouvel Arrivant (Invité)
|
|
|
|
* **Contexte** : Ami invité sur l'instance.
|
|
* **Flux** : Inscription (Compte "Paul") → Dashboard vide → Import OPML ou ajout URL → Ses articles apparaissent instantanément.
|
|
* **Valeur** : Isolation totale des données (ne voit pas les flux de Michael), onboarding rapide.
|
|
|
|
### J3: L'Admin Système (Ops)
|
|
|
|
* **Contexte** : Maintenance.
|
|
* **Flux** : `docker-compose pull && up` → Redémarrage < 5s → Données préservées.
|
|
* **Valeur** : Maintenance "Zero Headache".
|
|
|
|
---
|
|
|
|
## 5. Functional Requirements (Capabilities)
|
|
|
|
### User Management
|
|
|
|
* **FR1**: Inscription autonome d'un nouvel utilisateur.
|
|
* **FR2**: Authentification sécurisée (Session/JWT).
|
|
* **FR3**: Isolation stricte des données (Flux, Lectures, Favoris) par compte utilisateur.
|
|
|
|
### Feed Management
|
|
|
|
* **FR4**: Ajout de flux via URL (support RSS/Atom auto-détecté).
|
|
* **FR5**: Détection automatique des métadonnées (Titre, Icône) à l'ajout.
|
|
* **FR6**: Importation de flux en masse via fichier OPML.
|
|
* **FR7**: Gestion des flux (Renommer, Supprimer).
|
|
|
|
### Reading Experience
|
|
|
|
* **FR8**: Dashboard unifié "Nouveautés" trié par date.
|
|
* **FR9**: Mode "Lecture Plaisir" avec extraction du contenu principal (nettoyage HTML).
|
|
* **FR10**: Marquage "Lu" manuel ou automatique (scroll/swipe).
|
|
* **FR11**: Marquage "Tout lu" par flux ou global.
|
|
* **FR12**: Gestion des Favoris ("Star" / "Read Later").
|
|
|
|
### Real-time & Synchronization
|
|
|
|
* **FR13**: Push temps réel des nouveaux articles (Websockets) vers le client connecté.
|
|
* **FR14**: Synchronisation instantanée de l'état de lecture entre appareils.
|
|
|
|
### Administration
|
|
|
|
* **FR15**: Liste des utilisateurs inscrits (Vue Admin).
|
|
* **FR16**: Suppression de compte utilisateur.
|
|
|
|
---
|
|
|
|
## 6. Non-Functional Requirements (Quality)
|
|
|
|
### Performance & Resource Efficiency
|
|
|
|
* **NFR1**: Empreinte mémoire totale (Back+Front) **< 150 Mo** RAM.
|
|
* **NFR2**: Temps de chargement article (TTI) **< 100ms** perçu.
|
|
* **NFR3**: Score Lighthouse Mobile > 90.
|
|
|
|
### Architecture & Reliability
|
|
|
|
* **NFR4**: Architecture SPA (Single Page App) optimisée "Offline First" (Optimistic UI).
|
|
* **NFR5**: Redémarrage conteneur (Recovery Time) **< 5 secondes**.
|
|
* **NFR6**: Résilience totale aux flux défaillants (Timeout 5s strict, pas de blocage global).
|
|
|
|
### Security
|
|
|
|
* **NFR7**: Isolation des données inter-utilisateurs validée par tests.
|
|
* **NFR8**: Aucune télémétrie ou fuite de données (Privacy by Design).
|
|
|
|
---
|
|
|
|
## 7. Technical Stack Constraints
|
|
|
|
* **Frontend**: Framework SPA moderne (ex: React, Vue, Svelte) supportant les navigateurs Evergreen.
|
|
* **Backend**: Langage performant à faible empreinte mémoire (ex: Go, Rust, ou Node optimisé).
|
|
* **Database**: SQLite (mode WAL) pour la simplicité de déploiement et performance locale.
|
|
* **Deployment**: Image Docker unique (ou Multi-stage build) exposant un seul port.
|