diff --git a/docs/EXPORT_GUIDE.md b/docs/EXPORT_GUIDE.md new file mode 100644 index 0000000..2e57919 --- /dev/null +++ b/docs/EXPORT_GUIDE.md @@ -0,0 +1,360 @@ +# đŸ“€ Export de Notes Publiques - Guide Complet + +## 🎯 Concept + +Les notes publiques sont **gĂ©nĂ©rĂ©es en fichiers HTML statiques** directement sur le serveur. Cela signifie que vous pouvez copier le dossier `public/` et le dĂ©ployer sur n'importe quel serveur web (Apache, Nginx, GitHub Pages, Netlify, etc.) **sans avoir besoin de Go**. + +## 🔍 Lister les notes publiques + +Vous pouvez lister toutes les notes publiques avec la commande CLI intĂ©grĂ©e : + +```bash +./server list-public +``` + +**Sortie** : +``` +📚 Notes publiques (4): + +‱ Mon Guide + Source: personal/guide.md + Public: public/guide.html + Date: 2025-11-13 20:06:21 +``` + +Cette commande lit le fichier `notes/.public.json` et affiche : +- Le titre de chaque note +- Son chemin source +- Son chemin public +- La date de publication + +## 📁 Structure gĂ©nĂ©rĂ©e + +Quand vous publiez une note, le systĂšme gĂ©nĂšre automatiquement : + +``` +public/ +├── index.html # Liste de toutes les notes publiques +├── ma-note.html # Notes converties en HTML (structure plate) +├── autre.html +└── static/ + ├── theme.css # Styles CSS copiĂ©s + └── themes.css +``` + +**Note** : La structure est plate - toutes les notes publiques sont directement dans `public/`, peu importe leur emplacement d'origine dans vos dossiers personnels. + +## 🔄 GĂ©nĂ©ration automatique + +### Quand une note est publiĂ©e + +1. **L'utilisateur clique sur "🔒 PrivĂ©"** dans l'Ă©diteur +2. Le systĂšme : + - Lit le fichier Markdown + - Extrait le front matter (titre, tags, date) + - Convertit le Markdown en HTML avec goldmark + - GĂ©nĂšre un fichier HTML standalone complet + - Copie les CSS nĂ©cessaires + - RĂ©gĂ©nĂšre `index.html` avec la nouvelle note +3. **Le bouton devient "🌐 Public"** + +### Quand une note est retirĂ©e + +1. **L'utilisateur clique sur "🌐 Public"** +2. Le systĂšme : + - Supprime le fichier HTML correspondant + - RĂ©gĂ©nĂšre `index.html` sans cette note +3. **Le bouton redevient "🔒 PrivĂ©"** + +## 📋 Emplacement des fichiers + +- **Source** : `notes/` (vos fichiers Markdown originaux) +- **Export** : `public/` (fichiers HTML gĂ©nĂ©rĂ©s) +- **Index** : `.public.json` (liste des notes publiques) + +## 🚀 DĂ©ploiement + +### Option 1 : Copie manuelle sur serveur web + +```bash +# Copier le dossier public/ sur votre serveur +scp -r public/ user@server.com:/var/www/html/notes/ + +# Ou avec rsync +rsync -av public/ user@server.com:/var/www/html/notes/ +``` + +**Configuration Nginx** : +```nginx +server { + listen 80; + server_name notes.example.com; + + root /var/www/html/notes; + index index.html; + + location / { + try_files $uri $uri/ =404; + } +} +``` + +**Configuration Apache** : +```apache + + ServerName notes.example.com + DocumentRoot /var/www/html/notes + + + Options Indexes FollowSymLinks + AllowOverride All + Require all granted + + +``` + +### Option 2 : GitHub Pages (gratuit) + +```bash +# 1. CrĂ©er un repo GitHub +git init public/ +cd public/ +git add . +git commit -m "Initial public notes" + +# 2. Pousser vers GitHub +git remote add origin https://github.com/username/notes-public.git +git push -u origin main + +# 3. Activer GitHub Pages +# Settings → Pages → Source: main branch → Save +``` + +Vos notes seront disponibles Ă  : `https://username.github.io/notes-public/` + +### Option 3 : Netlify Drop (ultra simple) + +1. Allez sur https://app.netlify.com/drop +2. Glissez-dĂ©posez le dossier `public/` +3. Netlify gĂ©nĂšre automatiquement une URL + +### Option 4 : Vercel + +```bash +cd public/ +npx vercel +``` + +## 🔄 Automatisation avec script + +CrĂ©ez un script pour synchroniser automatiquement : + +```bash +#!/bin/bash +# sync-public.sh + +# Serveur de destination +REMOTE_USER="user" +REMOTE_HOST="server.com" +REMOTE_PATH="/var/www/html/notes" + +# Synchroniser +rsync -av --delete public/ ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH} + +echo "✅ Notes publiques synchronisĂ©es !" +``` + +Utilisation : +```bash +chmod +x sync-public.sh +./sync-public.sh +``` + +## 🔄 Automatisation avec Git Hook + +Synchroniser automatiquement aprĂšs chaque publication : + +```bash +# .git/hooks/post-commit +#!/bin/bash + +# Si le dossier public/ a changĂ©, synchroniser +if git diff --name-only HEAD~1 | grep -q "^public/"; then + ./sync-public.sh +fi +``` + +## 📊 Avantages de cette approche + +### ✅ Performance +- HTML prĂ©-gĂ©nĂ©rĂ© = temps de chargement instantanĂ© +- Pas de backend requis = moins de latence +- Cacheable Ă  100% par CDN + +### ✅ SĂ©curitĂ© +- Fichiers statiques = surface d'attaque minimale +- Pas de code serveur exĂ©cutĂ© cĂŽtĂ© public +- Isolation complĂšte du systĂšme d'Ă©dition + +### ✅ PortabilitĂ© +- Fonctionne sur **n'importe quel serveur web** +- HĂ©bergement gratuit possible (GitHub Pages, Netlify) +- Peut ĂȘtre mis sur un CDN (Cloudflare, etc.) + +### ✅ SimplicitĂ© +- Pas besoin de Go sur le serveur de destination +- Pas de base de donnĂ©es +- Juste des fichiers HTML Ă  copier + +### ✅ SEO +- HTML prĂ©-rendu = indexation optimale par Google +- Pas de JavaScript requis pour afficher le contenu +- Meta tags facilement ajoutables + +## 🎹 Personnalisation + +### Modifier les styles + +Les fichiers CSS sont dans `public/static/`. Vous pouvez les modifier directement : + +```bash +# Éditer le CSS +nano public/static/theme.css + +# Ou copier vos propres CSS +cp my-custom.css public/static/custom.css +``` + +### Ajouter des meta tags + +Modifiez `internal/api/public.go` dans la fonction `generateStandaloneHTML()` : + +```go + + + + + + + + %s - PersoNotes +``` + +### Ajouter Google Analytics + +Ajoutez dans `generateStandaloneHTML()` avant `` : + +```html + + + +``` + +## 🐛 DĂ©pannage + +### Les notes ne s'affichent pas + +**ProblĂšme** : `/public/` retourne 404 + +**Solutions** : +1. VĂ©rifier que le dossier `public/` existe : `ls -la public/` +2. Publier au moins une note pour gĂ©nĂ©rer le dossier +3. RedĂ©marrer le serveur Go + +### Les styles ne s'appliquent pas + +**ProblĂšme** : La page s'affiche sans CSS + +**Solutions** : +1. VĂ©rifier que `public/static/theme.css` existe +2. Les chemins CSS sont relatifs : `../static/theme.css` +3. Si vous copiez ailleurs, ajustez les chemins + +### Le HTML contient du Markdown brut + +**ProblĂšme** : Le Markdown n'est pas converti + +**Solutions** : +1. VĂ©rifier que goldmark est installĂ© : `go mod tidy` +2. Republier la note (toggle Private → Public) +3. VĂ©rifier les logs du serveur + +## 📝 Workflow recommandĂ© + +### Workflow quotidien + +1. **Écrire** vos notes en Markdown dans l'Ă©diteur +2. **Publier** les notes que vous voulez partager (bouton Public) +3. **Synchroniser** le dossier `public/` vers votre serveur (manuel ou automatique) + +### Workflow avec Git + +```bash +# 1. Publier des notes via l'interface web +# 2. Commiter les changements +git add public/ +git commit -m "Publish new notes" +git push + +# 3. Sur le serveur de production +git pull +# Les nouvelles notes sont disponibles ! +``` + +## 🔐 SĂ©curitĂ© + +### Routes publiques (pas d'auth) +- ✅ `/public/*` - Fichiers HTML statiques accessibles Ă  tous + +### Routes privĂ©es (nĂ©cessitent auth) +- 🔒 `/` - Interface d'Ă©dition +- 🔒 `/api/*` - APIs de modification +- 🔒 `/api/public/toggle` - **ProtĂ©ger cet endpoint !** + +### Protection recommandĂ©e + +Utilisez un reverse proxy avec authentification pour protĂ©ger l'Ă©dition : + +```nginx +# Nginx +location /public { + # Pas d'auth - accessible Ă  tous + proxy_pass http://localhost:8080; +} + +location / { + # Auth requise pour Ă©dition + auth_basic "Personotes Admin"; + auth_basic_user_file /etc/nginx/.htpasswd; + proxy_pass http://localhost:8080; +} +``` + +## 📚 Ressources + +- **Goldmark** : https://github.com/yuin/goldmark +- **GitHub Pages** : https://pages.github.com +- **Netlify** : https://www.netlify.com +- **Vercel** : https://vercel.com + +## ❓ FAQ + +**Q: Puis-je personnaliser le design des pages publiques ?** +R: Oui ! Modifiez `public/static/theme.css` ou Ă©ditez la fonction `generateStandaloneHTML()` dans `internal/api/public.go`. + +**Q: Les images dans mes notes fonctionnent-elles ?** +R: Oui, si vous utilisez des URLs absolues ou si vous copiez les images dans `public/static/images/`. + +**Q: Puis-je exporter vers PDF ?** +R: Les fichiers HTML peuvent ĂȘtre convertis en PDF avec wkhtmltopdf ou un navigateur (Imprimer → PDF). + +**Q: Comment supprimer toutes les notes publiques d'un coup ?** +R: Supprimez le dossier `public/` et le fichier `.public.json`, puis relancez le serveur. + +**Q: Les modifications des notes sont-elles automatiquement republiĂ©es ?** +R: Non. Si vous modifiez une note Markdown qui est dĂ©jĂ  publique, vous devez la republier (toggle Private puis Public) pour rĂ©gĂ©nĂ©rer le HTML. diff --git a/notes/.favorites.json b/notes/.favorites.json index b9452ee..f13dda9 100644 --- a/notes/.favorites.json +++ b/notes/.favorites.json @@ -62,6 +62,13 @@ "title": "projets", "added_at": "2025-12-24T15:59:24.938636283+01:00", "order": 8 + }, + { + "path": "documentation/bienvenue.md", + "is_dir": false, + "title": "bienvenue", + "added_at": "2025-12-24T16:30:46.322365652+01:00", + "order": 9 } ] } \ No newline at end of file diff --git a/notes/.public.json b/notes/.public.json index aefcbaf..2f3c546 100644 --- a/notes/.public.json +++ b/notes/.public.json @@ -1,5 +1,15 @@ { "notes": [ + { + "path": "documentation/bienvenue.md", + "title": "Bienvenue dans PersoNotes", + "published_at": "2025-12-24T16:28:26.173656053+01:00" + }, + { + "path": "documentation/authentication.md", + "title": "Authentication Guide", + "published_at": "2025-12-24T16:26:46.9731494+01:00" + }, { "path": "ideas/collaboration.md", "title": "Real-time Collaboration", diff --git a/notes/documentation/bienvenue.md b/notes/documentation/bienvenue.md index 470395a..1bc16ff 100644 --- a/notes/documentation/bienvenue.md +++ b/notes/documentation/bienvenue.md @@ -1,7 +1,7 @@ --- title: Bienvenue dans PersoNotes date: 08-11-2025 -last_modified: 09-11-2025:01:13 +last_modified: 24-12-2025:16:28 tags: - aide - documentation diff --git a/notes/documentation/client-feedback.md b/notes/documentation/client-feedback.md index 54a0f55..098773c 100644 --- a/notes/documentation/client-feedback.md +++ b/notes/documentation/client-feedback.md @@ -1,7 +1,7 @@ --- title: Client Feedback Session date: 10-11-2025 -last_modified: 11-11-2025:11:12 +last_modified: 24-12-2025:16:45 tags: - meeting - client @@ -28,3 +28,7 @@ Focus sur l'export PDF pour la v1.1 # DERNIER EDIT + +[Progressive Web App](projets/mobile/pwa.md) + +`This is a ` \ No newline at end of file diff --git a/notes/ideas/collaboration.md b/notes/documentation/collaboration.md similarity index 100% rename from notes/ideas/collaboration.md rename to notes/documentation/collaboration.md diff --git a/notes/documentation/api/endpoints.md b/notes/ideas/endpoints.md similarity index 100% rename from notes/documentation/api/endpoints.md rename to notes/ideas/endpoints.md diff --git a/notes/projets/backend/codemirror-integration.md b/notes/projets/backend/codemirror-integration.md index 69949f2..a1aa735 100644 --- a/notes/projets/backend/codemirror-integration.md +++ b/notes/projets/backend/codemirror-integration.md @@ -1,7 +1,7 @@ --- title: CodeMirror Integration date: 10-11-2025 -last_modified: 12-11-2025:09:37 +last_modified: 24-12-2025:16:46 tags: - projet - frontend diff --git a/notes/projets/frontend/vite-build.md b/notes/projets/frontend/vite-build.md index 6bd698f..94764c3 100644 --- a/notes/projets/frontend/vite-build.md +++ b/notes/projets/frontend/vite-build.md @@ -1,8 +1,11 @@ --- -title: "Vite Build Process" -date: "10-11-2025" -last_modified: "10-11-2025:19:21" -tags: ["projet", "frontend", "build"] +title: Vite Build Process +date: 10-11-2025 +last_modified: 24-12-2025:16:41 +tags: + - projet + - frontend + - build --- # Vite Build Process diff --git a/public/11.html b/public/authentication.html similarity index 77% rename from public/11.html rename to public/authentication.html index 6dc0d5f..b0351fa 100644 --- a/public/11.html +++ b/public/authentication.html @@ -3,7 +3,7 @@ - Daily Note - 2025-11-11 - PersoNotes + Authentication Guide - PersoNotes @@ -11,6 +11,8 @@ + + + + +
+
+ + + + + + Back to public notes + +
+
+
+

Bienvenue dans PersoNotes

+
08-11-2025
+
#aide#documentation#tutorial
+
+
+

08/11/2025 -

+

C’est mon application de prise de note

+

J’espĂ©re qu’elle va bien marcher

+

Bienvenue dans PersoNotes

+

Bienvenue dans votre application de prise de notes en Markdown ! Cette page vous explique comment utiliser l’application et le format front matter.

+

Qu’est-ce que le Front Matter ?

+

Le front matter est un bloc de mĂ©tadonnĂ©es en YAML placĂ© au dĂ©but de chaque note, entre deux lignes ---. Il permet d’ajouter des informations structurĂ©es Ă  vos notes.

+

Format du Front Matter

+
---
+title: Titre de votre note
+date: 08-11-2025
+last_modified: 08-11-2025:14:10
+tags: [projet, urgent, backend]
+---
+
+

Champs disponibles

+
    +
  • title : Le titre de votre note (gĂ©nĂ©rĂ© automatiquement depuis le nom du fichier)
  • +
  • date : Date de crĂ©ation (format: JJ-MM-AAAA)
  • +
  • last_modified : DerniĂšre modification (format: JJ-MM-AAAA:HH:MM) - mis Ă  jour automatiquement
  • +
  • tags : Liste de tags pour organiser et rechercher vos notes
  • +
+

Exemples de tags

+

Vous pouvez écrire vos tags de deux façons :

+
# Format inline
+tags: [projet, urgent, backend, api]
+
+# Format liste
+tags:
+  - projet
+  - urgent
+  - backend
+  - api
+
+

Les tags sont indexés et permettent de rechercher vos notes via la barre de recherche.

+

Guide Markdown

+

Titres

+
# Titre niveau 1
+## Titre niveau 2
+### Titre niveau 3
+
+

Emphase

+
*italique* ou _italique_
+**gras** ou __gras__
+***gras et italique***
+~~barré~~
+
+

Rendu : italique, gras, gras et italique

+

Listes

+

Liste non ordonnée

+
- ÉlĂ©ment 1
+- ÉlĂ©ment 2
+  - Sous-élément 2.1
+  - Sous-élément 2.2
+- ÉlĂ©ment 3
+
+

Rendu :

+
    +
  • ÉlĂ©ment 1
  • +
  • ÉlĂ©ment 2 +
      +
    • Sous-Ă©lĂ©ment 2.1
    • +
    • Sous-Ă©lĂ©ment 2.2
    • +
    +
  • +
  • ÉlĂ©ment 3
  • +
+

Liste ordonnée

+
1. Premier élément
+2. DeuxiÚme élément
+3. TroisiÚme élément
+
+

Rendu :

+
    +
  1. Premier élément
  2. +
  3. DeuxiÚme élément
  4. +
  5. TroisiÚme élément
  6. +
+

Liens et Images

+
[Texte du lien](https://example.com)
+![Texte alternatif](url-de-image.jpg)
+
+

Exemple : Documentation Markdown

+

Code

+

Code inline

+

Utilisez des backticks : code inline

+

Bloc de code

+
​```javascript
+function hello() {
+  console.log("Hello World!");
+}
+​```
+
+

Rendu :

+
function hello() {
+  console.log("Hello World!");
+}
+
+

Citations

+
> Ceci est une citation
+> sur plusieurs lignes
+
+

Rendu :

+
+

Ceci est une citation
+sur plusieurs lignes

+
+

Tableaux

+
| Colonne 1 | Colonne 2 | Colonne 3 |
+|-----------|-----------|-----------|
+| Ligne 1   | Données   | Données   |
+| Ligne 2   | Données   | Données   |
+
+

Rendu :

+ + + + + + + + + + + + + + + + + + + + +
Colonne 1Colonne 2Colonne 3
Ligne 1DonnéesDonnées
Ligne 2DonnéesDonnées
+

Séparateurs

+
---
+
+

Rendu :

+
+

Commandes Slash

+

Utilisez le caractĂšre / au dĂ©but d’une ligne pour accĂ©der aux commandes rapides :

+
    +
  • /h1, /h2, /h3 - Titres
  • +
  • /list - Liste Ă  puces
  • +
  • /date - InsĂ©rer la date du jour
  • +
  • /link - CrĂ©er un lien
  • +
  • /bold - Texte en gras
  • +
  • /italic - Texte en italique
  • +
  • /code - Code inline
  • +
  • /codeblock - Bloc de code
  • +
  • /quote - Citation
  • +
  • /hr - Ligne de sĂ©paration
  • +
  • /table - CrĂ©er un tableau
  • +
+

Navigation : Utilisez les flĂšches ↑↓ pour naviguer, EntrĂ©e ou Tab pour insĂ©rer, Échap pour annuler.

+

Raccourcis et Astuces

+

Créer une note

+

Cliquez sur le bouton ✹ Nouvelle note dans l’en-tĂȘte. Si la note existe dĂ©jĂ , elle sera ouverte, sinon elle sera créée.

+

Rechercher des notes

+

Utilisez la barre de recherche en haut pour filtrer vos notes par tags. La recherche est mise à jour en temps réel.

+

Sauvegarder

+

Cliquez sur le bouton đŸ’Ÿ Enregistrer pour sauvegarder vos modifications. Le champ last_modified du front matter sera automatiquement mis Ă  jour.

+

Supprimer une note

+

Cliquez sur l’icĂŽne đŸ—‘ïž Ă  cĂŽtĂ© du nom de la note dans la sidebar.

+

Organisation avec les tags

+

Les tags sont un excellent moyen d’organiser vos notes. Voici quelques suggestions :

+
    +
  • Par projet : projet-notes, projet-api, projet-frontend
  • +
  • Par prioritĂ© : urgent, important, backlog
  • +
  • Par type : documentation, tutorial, meeting, todo
  • +
  • Par technologie : javascript, go, python, docker
  • +
  • Par statut : en-cours, terminĂ©, archive
  • +
+

Exemple complet

+

Voici un exemple de note complĂšte :

+
---
+title: Réunion API Backend
+date: 08-11-2025
+last_modified: 08-11-2025:15:30
+tags: [meeting, backend, api, urgent]
+---
+
+# Réunion API Backend
+
+## Participants
+
+- Alice (Lead Dev)
+- Bob (Backend)
+- Charlie (Frontend)
+
+## Points discutés
+
+### 1. Architecture de l'API
+
+Nous avons décidé d'utiliser une architecture REST avec les endpoints suivants :
+
+- `GET /api/notes` - Liste toutes les notes
+- `POST /api/notes` - Créer une note
+- `PUT /api/notes/:id` - Modifier une note
+- `DELETE /api/notes/:id` - Supprimer une note
+
+### 2. Authentification
+
+> Utilisation de JWT pour l'authentification
+
+Code d'exemple :
+
+​```go
+func generateToken(userID string) (string, error) {
+    // Implementation
+}
+​```
+
+### 3. Prochaines étapes
+
+- [ ] Implémenter les endpoints
+- [ ] Écrire les tests
+- [ ] Documentation API
+
+## Actions
+
+| Qui     | Action               | Deadline   |
+|---------|---------------------|------------|
+| Bob     | Endpoints API       | 15-11-2025 |
+| Charlie | Interface Frontend  | 20-11-2025 |
+| Alice   | Review & Deploy     | 25-11-2025 |
+
+
+

Bonne prise de notes ! 📝

+ +
+
+
+ + + + \ No newline at end of file diff --git a/public/index.html b/public/index.html index a1e6a68..81b4a77 100644 --- a/public/index.html +++ b/public/index.html @@ -36,6 +36,24 @@

Discover my shared notes