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

11 KiB
Raw Blame History

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 :

# 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 :

---
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 :

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 :

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 :

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 :

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() :

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() :

// 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 :

/* 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 :

// 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 :

// 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

🎉 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