173 lines
6.7 KiB
Markdown
173 lines
6.7 KiB
Markdown
# 🗺️ Roadmap du Projet
|
||
|
||
## Vision
|
||
ObsiViewer offre une expérience de consultation en lecture seule d’une voûte Obsidian depuis le navigateur, avec rendu Markdown avancé, graphe interactif et recherche compatible Obsidian. La vision est d’être un viewer fiable, performant et portable, facilement auto‑hébergeable, couvrant 100% des usages de lecture/visualisation d’un vault de taille moyenne à grande, sans exiger Obsidian ni plugins côté client.
|
||
|
||
## Statut Actuel
|
||
**Version actuelle :** 0.0.0 (développement)
|
||
**Date de mise à jour :** 2025-10-02
|
||
|
||
### ✅ Complété
|
||
- Rendu Markdown riche via `MarkdownIt` + plugins (tables, footnotes, callouts, task-lists, code highlight)
|
||
- Wikilinks complets (`[[note]]`, alias, `#heading`, `#^block`) + preview au survol
|
||
- Graphe interactif (d3-force), options d’affichage et filtres (tags, attachments, orphans)
|
||
- Assistant de requêtes et moteur de recherche compatible Obsidian (parser, evaluator, index)
|
||
- Favoris (bookmarks) compatibles Obsidian avec persistance `.obsidian/bookmarks.json` (serveur & FS Access)
|
||
- API Express (lecture vault, bookmarks, graph config, SSE événements vault, résolution d’attachements)
|
||
- UI responsive, dark/light theme, sidebars redimensionnables
|
||
- Tests unitaires présents (wikilinks parser, markdown service, bookmarks core, search parser)
|
||
|
||
### 🚧 En Cours
|
||
- Accessibilité et navigation clavier avancée (tree bookmarks, résultats recherche)
|
||
- Améliorations UX des modals (création/édition bookmarks, import/export)
|
||
- Optimisations pour très grands vaults (>5000 notes)
|
||
|
||
## 📅 Phases de Développement
|
||
|
||
### Phase 1 : Solidification - Court Terme (0-3 mois)
|
||
**Priorité : HAUTE**
|
||
|
||
#### Fonctionnalités
|
||
- [ ] Zoom/Pan du graphe (d3-zoom)
|
||
- Intégrer `d3-zoom` dans `src/components/graph-view/graph-view.component.ts`
|
||
- Maintenir compatibilité drag & drop nœuds
|
||
- Estimation : 2-3j
|
||
|
||
- [ ] Modals d’édition bookmarks
|
||
- Créer un `BookmarkEditorModal` (ajout/édition groupes et fichiers)
|
||
- Valider les champs, support du parent selector, déplacement entre groupes
|
||
- Estimation : 2j
|
||
|
||
- [ ] Import/Export UI
|
||
- `ImportModal` (dry-run + merge/replace), `ExportModal` (filename + download)
|
||
- Intégrer services existants `bookmarks.service.ts`
|
||
- Estimation : 2j
|
||
|
||
- [ ] Assistant de requêtes – complétion propriétés YAML
|
||
- Suggestions basées sur index de propriétés (si dispo) dans `search-assistant.service.ts`
|
||
- Estimation : 1-2j
|
||
|
||
#### Améliorations Techniques
|
||
- [ ] Virtualisation listes (tree bookmarks, résultats recherche)
|
||
- Étudier `cdk-virtual-scroll-viewport` pour grandes listes
|
||
- Estimation : 2j
|
||
|
||
- [ ] Optimisation graphe pour vaults larges
|
||
- Filtrer profondeur par défaut, options de sampling
|
||
- Estimation : 2j
|
||
|
||
- [ ] Renforcer sanitization du rendu Markdown
|
||
- Audit des transformations HTML dans `MarkdownService`
|
||
- Estimation : 1j
|
||
|
||
#### Corrections
|
||
- [ ] TODO édition inline dans `src/components/bookmark-item/bookmark-item.component.ts` (ligne commentée « TODO: Open edit modal »)
|
||
- Remplacer le console.log par ouverture réelle du modal
|
||
- Estimation : 0.5j
|
||
|
||
- [ ] Conflits bookmarks/graph – UX
|
||
- Ajouter feedback visuel (toast succès/erreur) après save
|
||
- Estimation : 0.5-1j
|
||
|
||
- [ ] Z-index du menu contextuel (bookmarks)
|
||
- Ajuster SCSS pour superposer correctement
|
||
- Estimation : 0.5j
|
||
|
||
### Phase 2 : Parité+ - Moyen Terme (3-6 mois)
|
||
**Priorité : MOYENNE**
|
||
|
||
#### Fonctionnalités
|
||
- [ ] Export graphe (PNG/SVG)
|
||
- Ajout bouton export + rendu offscreen
|
||
- Estimation : 2j
|
||
|
||
- [ ] Groupes de couleurs avancés
|
||
- UI améliorée (palette, alpha, réordonnage drag)
|
||
- Estimation : 2j
|
||
|
||
- [ ] Recherche – scoring et tri avancés
|
||
- Pondération configurable (titre, path, tags, contenu)
|
||
- Estimation : 2j
|
||
|
||
#### Améliorations Techniques
|
||
- [ ] Cache index recherche/graph sur IndexedDB
|
||
- Restauration rapide au chargement
|
||
- Estimation : 2-3j
|
||
|
||
- [ ] E2E tests (Playwright/Cypress)
|
||
- Flux: connect vault → créer/modifier favoris → save/reload → conflit
|
||
- Estimation : 3-4j
|
||
|
||
#### Corrections
|
||
- [ ] Résilience API (timeouts/retries/backoff)
|
||
- Wrapper HttpClient + messages d’erreurs clairs
|
||
- Estimation : 1j
|
||
|
||
### Phase 3 : Extensibilité - Long Terme (6-12 mois)
|
||
**Priorité : BASSE**
|
||
|
||
#### Fonctionnalités
|
||
- [ ] Mode PWA hors-ligne (avec FS Access API quand supporté)
|
||
- Mise en cache assets, index et dernières notes
|
||
- Estimation : 5-7j
|
||
|
||
- [ ] Connecteurs de stockage optionnels
|
||
- WebDAV/Dropbox (via repository pattern) – lecture seule
|
||
- Estimation : 5-10j (recherche + PoC)
|
||
|
||
- [ ] Mini-map du graphe / overview
|
||
- Améliorer navigation sur grandes topologies
|
||
- Estimation : 2-3j
|
||
|
||
#### Améliorations Techniques
|
||
- [ ] Observabilité
|
||
- Logs structurés, métriques (Web Vitals), tracing léger
|
||
- Estimation : 2-3j
|
||
|
||
## 🎯 Objectifs par Catégorie
|
||
|
||
### Performance
|
||
- [ ] 60fps stables avec 2000+ nœuds
|
||
- [ ] Temps de rendu initial <300ms pour 1000 nœuds
|
||
|
||
### Sécurité
|
||
- [ ] Sanitization renforcée + tests XSS ciblés
|
||
- [ ] Politique d’upload/serve d’attachements documentée
|
||
|
||
### Expérience Utilisateur
|
||
- [ ] Navigation clavier complète (ARIA tree, listes résultats)
|
||
- [ ] Feedback systématique (toasts, spinners, états vides)
|
||
|
||
### Documentation
|
||
- [ ] Guides de contribution et styleguide UI
|
||
- [ ] Schémas d’architecture (séquence, composants)
|
||
|
||
### Tests
|
||
- [ ] Couverture 80% sur core (bookmarks, search, markdown)
|
||
- [ ] E2E de la chaîne bookmarks (connect → CRUD → save → conflit)
|
||
|
||
## 💡 Idées Futures (Backlog)
|
||
- Suggestions de liens connexes basées sur graphe (similarité simple)
|
||
- Intégration de l'éditeur Excalidraw pour visualiser et editer les fichier .excalidraw
|
||
- Colorisation des nœuds par tags dominants (auto)
|
||
- Timeline view par dates de création/modification
|
||
- Export PDF/HTML d’une note avec graph contextuel
|
||
|
||
## 🚫 Hors Scope
|
||
- Édition de contenu Markdown (éditeur complet) – le projet vise la lecture/visualisation
|
||
- Synchronisation multi-utilisateur temps réel – non prioritaire
|
||
|
||
## 📊 Métriques de Succès
|
||
- Métrique 1 : TTI < 2s sur vault 1000 notes (desktop, réseau moyen)
|
||
- Métrique 2 : 60fps moyenne pendant interactions graphe (>95% frames)
|
||
- Métrique 3 : Couverture tests unitaires ≥ 80% sur modules core
|
||
- Métrique 4 : 0 erreurs critiques Lighthouse (Perf > 85, Access > 90)
|
||
|
||
## 🤝 Contributions
|
||
Les contributions sont bienvenues. Ouvrez une issue avant une PR pour discuter du scope. Respectez les conventions (commits, lint, style), fournissez des captures pour changements UI.
|
||
|
||
## 📝 Notes
|
||
- Firefox/Safari n’offrent pas FS Access API : privilégier le mode serveur (`server/index.mjs`).
|
||
- Les endpoints serveur sont décrits dans `README.md` (section API).
|
||
- Les TODO/FIXME identifiés : `bookmark-item` (édition modal), styles (z-index), zoom/pan graphe.
|