Files
personotes/docs/DAILY_NOTES.md
2025-11-12 17:16:13 +01:00

389 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Daily Notes - Documentation
Les **Daily Notes** sont des notes quotidiennes permettant une prise de notes rapide et organisée par date. Cette fonctionnalité s'intègre parfaitement dans PersoNotes avec un calendrier interactif et des raccourcis clavier.
## 🎯 Fonctionnalités
### 1. Accès Rapide
- **Bouton dans le header** : Cliquez sur "📅 Note du jour"
- **Raccourci clavier** : `Ctrl/Cmd+D` (fonctionne partout dans l'application)
- **Création automatique** : La note du jour est créée automatiquement si elle n'existe pas
### 2. Calendrier Interactif
- **Vue mensuelle compacte** dans la sidebar
- **Navigation** : Utilisez les flèches `` et `` pour changer de mois
- **Indicateurs visuels** :
- **Aujourd'hui** : Bordure violette avec fond dégradé
- **Notes existantes** : Point bleu (●) sous la date + cliquable
- **Jours sans notes** : Grisés (opacité 50%) et non cliquables
- **Jours du mois** : Affichés selon leur état
- **Autres mois** : Très grisés et non cliquables
- **Clic sur une date** : Ouvre la note de ce jour (uniquement si elle existe)
### 3. Notes Récentes
- Liste des **7 dernières daily notes** dans la sidebar
- Affichage du jour de la semaine et de la date
- Accès rapide par simple clic
## ✍️ Créer une Nouvelle Daily Note
**Important** : Seules les notes existantes sont cliquables dans le calendrier. Pour créer une nouvelle daily note :
### Méthode 1 : Note du Jour
- **Bouton** : Cliquez sur "📅 Note du jour" dans le header
- **Raccourci** : Appuyez sur `Ctrl/Cmd+D`
- **Bouton calendrier** : Cliquez sur le bouton "📅 Aujourd'hui" sous le calendrier
Ces trois méthodes créent automatiquement la note du jour si elle n'existe pas encore.
### Méthode 2 : Date Spécifique (API)
Pour créer une note à une date spécifique (par exemple pour une note passée oubliée), utilisez l'API :
```bash
# Créer la note du 10 janvier 2025
curl http://localhost:8080/api/daily/2025-01-10
```
Ou accédez directement à l'URL dans votre navigateur :
```
http://localhost:8080/api/daily/2025-01-10
```
### Méthode 3 : Création Manuelle
Vous pouvez aussi créer manuellement le fichier :
1. Créez le dossier : `notes/daily/2025/01/`
2. Créez le fichier : `10.md`
3. Copiez le template (voir section Template ci-dessous)
Le calendrier affichera automatiquement la note après actualisation.
## 📁 Organisation des Fichiers
### Structure des Dossiers
```
notes/
└── daily/
└── 2025/
└── 01/
├── 01.md
├── 02.md
├── 11.md
└── ...
```
### Format de Fichier
- **Nom** : `DD.md` (ex: `11.md` pour le 11 janvier)
- **Chemin complet** : `notes/daily/YYYY/MM/DD.md`
- **Tag automatique** : `[daily]` pour toutes les daily notes
## 📝 Template par Défaut
Chaque nouvelle daily note est créée avec le template suivant :
```markdown
---
title: "Daily Note - 2025-01-11"
date: "11-01-2025"
last_modified: "11-01-2025:14:30"
tags: [daily]
---
# 📅 Samedi 11 janvier 2025
## 🎯 Objectifs du jour
-
## 📝 Notes
-
## ✅ Accompli
-
## 💭 Réflexions
-
## 🔗 Liens
-
```
### Sections du Template
1. **🎯 Objectifs du jour** : Liste des objectifs à accomplir
2. **📝 Notes** : Notes libres, idées, observations
3. **✅ Accompli** : Ce qui a été fait dans la journée
4. **💭 Réflexions** : Pensées, apprentissages, réflexions personnelles
5. **🔗 Liens** : Liens vers d'autres notes, ressources, etc.
## 🎨 Interface Utilisateur
### Header
Le bouton "📅 Note du jour" apparaît dans le header entre "🏠 Accueil" et "✨ Nouvelle note".
### Sidebar
La section "📅 Daily Notes" comprend :
- **Calendrier** : Vue mensuelle avec navigation
- **Bouton "Aujourd'hui"** : Accès rapide à la note du jour
- **Section "Récentes"** : Liste des 7 dernières notes
### Style du Calendrier
- **Grille 7x7** : Jours de la semaine + jours du mois
- **En-têtes** : L M M J V S D (Lundi à Dimanche)
- **Hover** : Effet de zoom léger (scale 1.05) et bordure bleue
- **Responsive** : S'adapte aux petits écrans mobiles
## 🔧 Endpoints API
### GET /api/daily/today
Ouvre ou crée la note du jour (aujourd'hui).
**Exemple** :
```bash
curl http://localhost:8080/api/daily/today
```
**Comportement** :
- Crée la note si elle n'existe pas
- Redirige vers `/api/notes/daily/2025/01/11.md`
### GET /api/daily/{YYYY-MM-DD}
Ouvre ou crée la note d'une date spécifique.
**Exemple** :
```bash
curl http://localhost:8080/api/daily/2025-01-15
```
**Comportement** :
- Crée la note si elle n'existe pas
- Redirige vers `/api/notes/daily/2025/01/15.md`
### GET /api/daily/calendar/{YYYY}/{MM}
Retourne le HTML du calendrier pour un mois spécifique.
**Exemple** :
```bash
curl http://localhost:8080/api/daily/calendar/2025/01
```
**Response** : HTML du calendrier avec navigation et indicateurs
### GET /api/daily/recent
Retourne les 7 dernières daily notes (HTML).
**Exemple** :
```bash
curl http://localhost:8080/api/daily/recent
```
**Response** : Liste HTML des notes récentes
## 💻 Architecture Technique
### Backend (Go)
**Fichiers** :
- `internal/api/daily_notes.go` : Logique métier des daily notes
- `templates/daily-calendar.html` : Template du calendrier
- `templates/daily-recent.html` : Template des notes récentes
**Fonctions clés** :
- `getDailyNotePath(date)` : Calcule le chemin d'une daily note
- `dailyNoteExists(date)` : Vérifie si une note existe
- `createDailyNote(date)` : Crée une note avec le template
- `buildCalendarData(year, month)` : Construit les données du calendrier
**Algorithme du Calendrier** :
1. Calcule le premier et dernier jour du mois
2. Remplit les jours avant le 1er (mois précédent, grisés)
3. Remplit tous les jours du mois
4. Remplit les jours après le dernier (mois suivant, grisés)
5. Groupe les jours par semaines (lignes de 7 jours)
6. Marque aujourd'hui et les jours ayant des notes
### Frontend (JavaScript)
**Fichier** : `frontend/src/daily-notes.js`
**Fonctions clés** :
- `initDailyNotesShortcut()` : Raccourci `Ctrl/Cmd+D`
- `refreshDailyNotes()` : Rafraîchit le calendrier et les notes récentes
- Événements HTMX : Rafraîchissement automatique après sauvegarde
### Styles (CSS)
**Fichier** : `static/theme.css`
**Classes CSS** :
- `.daily-calendar` : Conteneur du calendrier
- `.calendar-grid` : Grille 7x7
- `.calendar-day` : Cellule de jour
- `.calendar-day-today` : Style pour aujourd'hui
- `.calendar-day-has-note` : Style pour les jours avec notes
- `.daily-recent-item` : Élément de la liste récente
## 🎯 Cas d'Usage
### 1. Journal Quotidien
Utilisez les daily notes comme un journal personnel :
- Notez vos objectifs le matin
- Ajoutez des notes au fil de la journée
- Récapitulez vos accomplissements le soir
### 2. Suivi de Projet
Documentez l'avancement jour par jour :
- Objectifs : Tâches du jour
- Notes : Progrès et observations
- Accompli : Livraisons et jalons
- Réflexions : Blocages et solutions
### 3. Veille Technologique
Collectez des informations quotidiennes :
- Notes : Articles intéressants
- Liens : Ressources découvertes
- Réflexions : Apprentissages clés
### 4. Réunions Quotidiennes (Stand-up)
Préparez vos stand-ups :
- Accompli : Ce qui a été fait hier
- Objectifs : Ce qui sera fait aujourd'hui
- Réflexions : Blocages éventuels
## 🔄 Workflow Recommandé
### Matin (9h)
1. `Ctrl/Cmd+D` pour ouvrir la note du jour
2. Remplir la section "🎯 Objectifs du jour"
3. Planifier les priorités
### Journée
1. Ajouter des notes au fil de l'eau dans "📝 Notes"
2. Capturer les idées importantes
3. Ajouter des liens vers d'autres notes
### Soir (18h)
1. Cocher les objectifs accomplis dans "✅ Accompli"
2. Noter les réflexions dans "💭 Réflexions"
3. Préparer les objectifs du lendemain
### Revue Hebdomadaire
1. Cliquer sur les 7 dernières notes dans "Récentes"
2. Synthétiser les accomplissements
3. Identifier les patterns et améliorations
## 🛠️ Personnalisation
### Modifier le Template
Éditez `internal/api/daily_notes.go`, fonction `createDailyNote()` :
```go
template := fmt.Sprintf(`---
title: "Daily Note - %s"
date: "%s"
last_modified: "%s"
tags: [daily, perso] // Ajoutez des tags personnalisés
---
# 📅 %s %d %s %d
## Vos sections personnalisées
-
`, ...)
```
### Changer le Dossier de Stockage
Modifiez `getDailyNotePath()` :
```go
// Au lieu de notes/daily/2025/01/11.md
// Utilisez notes/journal/2025-01-11.md
relativePath := filepath.Join("journal", fmt.Sprintf("%s.md", date.Format("2006-01-02")))
```
### Ajuster les Couleurs du Calendrier
Éditez `static/theme.css` :
```css
/* Aujourd'hui */
.calendar-day-today {
border-color: #your-color;
background: your-gradient;
}
/* Notes existantes */
.calendar-day-has-note .calendar-day-number {
color: #your-color;
}
```
## ⚙️ Configuration Avancée
### Désactiver l'Auto-création
Si vous ne voulez pas créer automatiquement les notes :
```go
// Dans handleDailyToday() et handleDailyDate()
// Commentez ces lignes :
// if !h.dailyNoteExists(date) {
// if err := h.createDailyNote(date); err != nil {
// ...
// }
// }
```
### Changer le Raccourci Clavier
Éditez `frontend/src/daily-notes.js` :
```javascript
// Au lieu de Ctrl/Cmd+D, utilisez Ctrl/Cmd+J par exemple
if ((event.ctrlKey || event.metaKey) && event.key === 'j') {
event.preventDefault();
// ...
}
```
## 🐛 Dépannage
### Le calendrier ne s'affiche pas
1. Vérifiez que le serveur a démarré correctement
2. Vérifiez la console du navigateur pour des erreurs
3. Vérifiez que `/api/daily/calendar/2025/01` retourne du HTML
### La note du jour ne se crée pas
1. Vérifiez les permissions du dossier `notes/`
2. Vérifiez les logs du serveur pour des erreurs
3. Vérifiez que le dossier `notes/daily/` peut être créé
### Le raccourci Ctrl/Cmd+D ne fonctionne pas
1. Vérifiez que le frontend a été compilé (`npm run build`)
2. Vérifiez la console du navigateur pour "Daily notes shortcuts initialized"
3. Assurez-vous qu'aucun autre raccourci ne capture Ctrl/Cmd+D
### Le calendrier ne se rafraîchit pas après sauvegarde
1. Vérifiez que le chemin de la note commence par `daily/`
2. Vérifiez les événements HTMX dans la console
3. Rafraîchissez manuellement en cliquant sur les flèches du calendrier
## 📚 Ressources
- [ARCHITECTURE.md](../ARCHITECTURE.md) - Architecture globale
- [CLAUDE.md](../CLAUDE.md) - Guide de développement
- [API.md](../API.md) - Documentation de l'API REST
## 🎉 Bonnes Pratiques
1. **Consistance** : Écrivez chaque jour, même brièvement
2. **Honnêteté** : Notez ce qui s'est vraiment passé
3. **Liens** : Créez des liens vers d'autres notes
4. **Tags** : Ajoutez des tags supplémentaires si nécessaire
5. **Revue** : Relisez vos notes passées régulièrement
---
**Version** : 1.0.0
**Date** : 2025-01-11
**Auteur** : PersoNotes Team