Files
personotes/generate_notes.sh

806 lines
15 KiB
Bash
Executable File

#!/bin/bash
# Fonction pour créer une note avec front matter
create_note() {
local path="$1"
local title="$2"
local tags="$3"
local content="$4"
local date=$(date +%d-%m-%Y)
local time=$(date +%d-%m-%Y:%H:%M)
cat > "$path" << NOTEEOF
---
title: "$title"
date: "$date"
last_modified: "$time"
tags: [$tags]
---
$content
NOTEEOF
}
# Créer la structure de dossiers
mkdir -p projets/{backend,frontend,mobile}
mkdir -p meetings/2025
mkdir -p documentation/{api,guides}
mkdir -p ideas
mkdir -p tasks
mkdir -p research/{ai,tech,design}
mkdir -p personal
mkdir -p archive
echo "Dossiers créés..."
# Notes dans projets/backend
create_note "projets/backend/api-design.md" "API Design" '"projet", "backend", "api"' \
"# API Design
## Architecture REST
Notre API suit les principes REST avec les endpoints suivants:
- \`GET /api/v1/notes\` - Liste toutes les notes
- \`GET /api/v1/notes/{path}\` - Récupère une note
- \`PUT /api/v1/notes/{path}\` - Crée/met à jour une note
- \`DELETE /api/v1/notes/{path}\` - Supprime une note
## Authentification
Pour l'instant, pas d'authentification. À implémenter avec JWT.
## Rate Limiting
À considérer pour la production."
create_note "projets/backend/database-schema.md" "Database Schema" '"projet", "backend", "database"' \
"# Database Schema
## Indexer
L'indexer maintient une structure en mémoire:
\`\`\`go
type Indexer struct {
tags map[string][]string
docs map[string]*Document
mu sync.RWMutex
}
\`\`\`
## Performance
- Indexation en O(n) au démarrage
- Recherche en O(1) pour les tags
- Re-indexation incrémentale avec fsnotify"
create_note "projets/backend/deployment.md" "Deployment Strategy" '"projet", "backend", "devops"' \
"# Deployment Strategy
## Production
1. Compiler le binaire Go
2. Copier les fichiers statiques
3. Configurer nginx comme reverse proxy
4. Systemd pour gérer le service
## Docker
À créer un Dockerfile pour faciliter le déploiement.
\`\`\`dockerfile
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go build -o server ./cmd/server
\`\`\`"
# Notes dans projets/frontend
create_note "projets/frontend/codemirror-integration.md" "CodeMirror Integration" '"projet", "frontend", "editor"' \
"# CodeMirror 6 Integration
## Configuration
Nous utilisons CodeMirror 6 avec:
- \`@codemirror/lang-markdown\` pour le Markdown
- \`@codemirror/theme-one-dark\` pour le thème
- \`@codemirror/basic-setup\` pour les fonctionnalités de base
## Slash Commands
Système de commandes rapides avec \`/\`:
- /h1, /h2, /h3 - Titres
- /date - Date actuelle
- /table - Tableau
- /code - Bloc de code
## Auto-save
Déclenché après 2 secondes d'inactivité."
create_note "projets/frontend/vite-build.md" "Vite Build Process" '"projet", "frontend", "build"' \
"# Vite Build Process
## Structure
\`\`\`
frontend/
├── src/
│ ├── main.js
│ ├── editor.js
│ ├── file-tree.js
│ └── ui.js
├── vite.config.js
└── package.json
\`\`\`
## Build
\`npm run build\` génère:
- \`project-notes-frontend.es.js\` (ES modules)
- \`project-notes-frontend.umd.js\` (UMD)
## Watch Mode
\`npm run build -- --watch\` pour le dev."
create_note "projets/frontend/drag-and-drop.md" "Drag and Drop System" '"projet", "frontend", "ux"' \
"# Drag and Drop System
## Fonctionnalités
- Déplacer fichiers entre dossiers
- Déplacer dossiers entre dossiers
- Zone de drop racine
- Indicateur visuel de destination
## Implémentation
Utilise l'API HTML5 Drag & Drop:
- \`dragstart\` / \`dragend\`
- \`dragover\` / \`dragleave\`
- \`drop\`
## Validations
- Impossible de déplacer un dossier dans lui-même
- Impossible de déplacer la racine"
# Notes dans projets/mobile
create_note "projets/mobile/responsive-design.md" "Responsive Design" '"projet", "mobile", "css"' \
"# Responsive Design
## Media Queries
\`\`\`css
@media (max-width: 768px) {
/* Tablettes */
}
@media (max-width: 480px) {
/* Smartphones */
}
\`\`\`
## Mobile-First
- Sidebar masquée par défaut
- Preview-only mode
- Touch-friendly buttons"
create_note "projets/mobile/pwa.md" "Progressive Web App" '"projet", "mobile", "pwa"' \
"# PWA Features
## À implémenter
1. Service Worker
2. Manifest.json
3. Offline support
4. Install prompt
## Avantages
- Fonctionne offline
- Installable sur mobile
- Notifications push possibles"
# Notes dans meetings
create_note "meetings/2025/sprint-planning.md" "Sprint Planning January" '"meeting", "planning"' \
"# Sprint Planning - Janvier 2025
## Participants
- Équipe Dev
- Product Owner
- Scrum Master
## Objectifs
1. Améliorer le drag & drop
2. Ajouter l'API REST
3. Search modal avec Ctrl+K
## Vélocité
20 story points pour ce sprint.
## Risques
- Complexité du drag & drop de dossiers
- Tests E2E à mettre en place"
create_note "meetings/2025/retrospective.md" "Sprint Retrospective" '"meeting", "retro"' \
"# Retrospective - Sprint 1
## What went well ✅
- API REST implémentée rapidement
- Bonne collaboration
- Tests unitaires en place
## What to improve ⚠️
- Documentation à jour
- CI/CD pipeline
- Code reviews plus rapides
## Action items
1. Créer CONTRIBUTING.md
2. Setup GitHub Actions
3. Daily standups à 10h"
create_note "meetings/client-feedback.md" "Client Feedback Session" '"meeting", "client"' \
"# Client Feedback - Session 1
## Points positifs
- Interface épurée et rapide
- Édition Markdown fluide
- Recherche efficace
## Demandes
1. Export PDF des notes
2. Partage de notes par lien
3. Mode collaboratif
4. Dark/Light theme toggle
## Priorités
Focus sur l'export PDF pour la v1.1"
# Notes dans documentation/api
create_note "documentation/api/endpoints.md" "API Endpoints Reference" '"documentation", "api"' \
"# API Endpoints
## Notes
### List Notes
\`\`\`
GET /api/v1/notes
\`\`\`
Returns array of all notes.
### Get Note
\`\`\`
GET /api/v1/notes/{path}
Accept: application/json | text/markdown
\`\`\`
### Create/Update Note
\`\`\`
PUT /api/v1/notes/{path}
Content-Type: application/json
\`\`\`
### Delete Note
\`\`\`
DELETE /api/v1/notes/{path}
\`\`\`
## Examples
See API.md for complete examples."
create_note "documentation/api/authentication.md" "Authentication Guide" '"documentation", "api", "security"' \
"# Authentication
## Current Status
⚠️ No authentication currently implemented.
## Future Implementation
### JWT Tokens
\`\`\`
POST /api/auth/login
{
\"username\": \"user\",
\"password\": \"pass\"
}
Response:
{
\"token\": \"eyJhbGc...\"
}
\`\`\`
### Bearer Token
\`\`\`
Authorization: Bearer eyJhbGc...
\`\`\`
## Security
- HTTPS only in production
- Reverse proxy with nginx
- Rate limiting"
# Notes dans documentation/guides
create_note "documentation/guides/getting-started.md" "Getting Started Guide" '"documentation", "guide", "tutorial"' \
"# Getting Started
## Installation
1. Clone the repo
2. Install Go 1.22+
3. Install Node.js dependencies
4. Build frontend
5. Run server
\`\`\`bash
git clone https://github.com/user/project-notes.git
cd project-notes
cd frontend && npm install && npm run build
cd ..
go run ./cmd/server
\`\`\`
## First Steps
1. Create a note
2. Add tags
3. Search with Ctrl+K
4. Organize with folders"
create_note "documentation/guides/markdown-syntax.md" "Markdown Syntax Guide" '"documentation", "guide", "markdown"' \
"# Markdown Syntax
## Headers
\`\`\`markdown
# H1
## H2
### H3
\`\`\`
## Emphasis
**bold** and *italic*
## Lists
- Item 1
- Item 2
- Nested
## Code
Inline \`code\` and blocks:
\`\`\`python
def hello():
print('Hello')
\`\`\`
## Tables
| Column | Column |
|--------|--------|
| Data | Data |"
# Notes dans ideas
create_note "ideas/mobile-app.md" "Native Mobile App" '"idea", "mobile"' \
"# Native Mobile App Idea
## Concept
Créer une app native iOS/Android pour l'édition de notes.
## Tech Stack
- React Native ou Flutter
- Sync avec l'API REST
- Offline-first architecture
## Features
- Push notifications
- Widget home screen
- Voice notes
- Photo attachments
## Timeline
Q2 2025 - Prototype
Q3 2025 - Beta testing"
create_note "ideas/ai-assistant.md" "AI Writing Assistant" '"idea", "ai"' \
"# AI Writing Assistant
## Vision
Intégrer un assistant IA pour:
- Suggestions d'écriture
- Résumés automatiques
- Tags suggestions
- Recherche sémantique
## APIs
- OpenAI GPT-4
- Anthropic Claude
- Local LLM avec Ollama
## Privacy
Données restent locales, API optionnelle."
create_note "ideas/collaboration.md" "Real-time Collaboration" '"idea", "collaboration"' \
"# Real-time Collaboration
## Goal
Plusieurs utilisateurs éditent la même note simultanément.
## Technology
- WebSockets
- Operational Transforms ou CRDT
- Presence indicators
## Challenges
- Conflict resolution
- Performance at scale
- User permissions"
# Notes dans tasks
create_note "tasks/backlog.md" "Product Backlog" '"task", "planning"' \
"# Product Backlog
## High Priority
- [ ] Export notes to PDF
- [ ] Bulk operations (delete, move)
- [ ] Tags management page
- [ ] Keyboard shortcuts documentation
## Medium Priority
- [ ] Note templates
- [ ] Trash/Recycle bin
- [ ] Note history/versions
- [ ] Full-text search improvements
## Low Priority
- [ ] Themes customization
- [ ] Plugin system
- [ ] Graph view of notes links"
create_note "tasks/bugs.md" "Known Bugs" '"task", "bug"' \
"# Known Bugs
## Critical
None currently! 🎉
## Medium
- [ ] Search doesn't highlight in preview
- [ ] Drag over nested folders can be glitchy
- [ ] Mobile: sidebar animation stutters
## Low
- [ ] File tree doesn't remember expanded state
- [ ] Tags with special chars break search
- [ ] Long filenames overflow in sidebar
## Fixed
- [x] Slash commands not working consistently
- [x] Drag and drop to root not working"
# Notes dans research/ai
create_note "research/ai/semantic-search.md" "Semantic Search Research" '"research", "ai", "search"' \
"# Semantic Search
## Current Search
Keyword-based with scoring.
## Semantic Search
Use embeddings for similarity:
- OpenAI embeddings API
- Local models (sentence-transformers)
- Vector database (Pinecone, Weaviate)
## Implementation
1. Generate embeddings for all notes
2. Store in vector DB
3. Query with user search
4. Return top-k similar
## Cost Analysis
OpenAI: $0.0001 per 1K tokens
Local: Free but slower"
create_note "research/ai/auto-tagging.md" "Automatic Tagging" '"research", "ai", "nlp"' \
"# Automatic Tagging
## Goal
Suggest tags based on note content.
## Approaches
### Rule-based
- Keyword extraction
- TF-IDF
### ML-based
- Zero-shot classification
- Fine-tuned model
### Hybrid
- Combine both approaches
## Training Data
Use existing notes with tags as training set."
# Notes dans research/tech
create_note "research/tech/go-performance.md" "Go Performance Optimization" '"research", "tech", "performance"' \
"# Go Performance
## Current Bottlenecks
- Full re-index on file changes
- No caching of parsed front matter
## Optimizations
### Incremental Indexing
Only re-parse changed files.
### Caching
\`\`\`go
type Cache struct {
entries map[string]*CachedEntry
mu sync.RWMutex
}
\`\`\`
### Profiling
\`\`\`bash
go test -cpuprofile=cpu.prof
go tool pprof cpu.prof
\`\`\`"
create_note "research/tech/websockets.md" "WebSockets for Live Updates" '"research", "tech", "websocket"' \
"# WebSockets
## Use Cases
- Live file tree updates
- Real-time collaboration
- Presence indicators
## Libraries
- \`gorilla/websocket\`
- \`nhooyr.io/websocket\`
## Architecture
\`\`\`
Client <-> WebSocket <-> Hub <-> Indexer
\`\`\`
## Broadcasting
\`\`\`go
type Hub struct {
clients map[*Client]bool
broadcast chan []byte
}
\`\`\`"
# Notes dans research/design
create_note "research/design/ui-inspiration.md" "UI Design Inspiration" '"research", "design", "ui"' \
"# UI Inspiration
## Apps to Study
- Notion - Clean, minimal
- Obsidian - Graph view
- Bear - Beautiful typography
- Craft - Smooth animations
## Design Systems
- Material Design 3
- Apple HIG
- Tailwind components
## Colors
Current: Material Darker
Consider:
- Nord theme
- Dracula
- Catppuccin"
create_note "research/design/typography.md" "Typography Research" '"research", "design", "typography"' \
"# Typography
## Current Fonts
- System fonts for UI
- Fira Code for code
## Alternatives
### Sans-serif
- Inter
- Poppins
- Public Sans
### Monospace
- JetBrains Mono
- Cascadia Code
- Source Code Pro
## Readability
- Line height: 1.6
- Max width: 65ch
- Font size: 16px base"
# Notes dans personal
create_note "personal/learning-goals.md" "2025 Learning Goals" '"personal", "learning"' \
"# Learning Goals 2025
## Technical
- [ ] Master Go concurrency patterns
- [ ] Learn Rust basics
- [ ] Deep dive into databases
- [ ] System design courses
## Soft Skills
- [ ] Technical writing
- [ ] Public speaking
- [ ] Mentoring
## Books to Read
1. Designing Data-Intensive Applications
2. The Pragmatic Programmer
3. Clean Architecture"
create_note "personal/book-notes.md" "Book Notes" '"personal", "notes", "books"' \
"# Book Notes
## Currently Reading
**Atomic Habits** by James Clear
Key takeaways:
- 1% improvement daily = 37x better in a year
- Identity-based habits
- Environment design
## Want to Read
- Deep Work - Cal Newport
- The Mom Test - Rob Fitzpatrick
- Shape Up - Basecamp"
# Notes dans archive
create_note "archive/old-ideas.md" "Archived Ideas" '"archive", "ideas"' \
"# Archived Ideas
Ideas that didn't make the cut:
## WYSIWYG Editor
Too complex, Markdown is better.
## Desktop App
Web app is sufficient.
## Blockchain Integration
No real use case.
## Gamification
Not aligned with minimalist approach."
# Quelques notes à la racine
create_note "welcome.md" "Welcome" '"default"' \
"# Welcome to Project Notes
This is your personal note-taking app.
## Quick Start
1. Press **Ctrl/Cmd+K** to search
2. Click **✨ Nouvelle note** to create
3. Use **/** for quick Markdown commands
## Features
- **Fast** - Go backend, instant search
- **Simple** - Just Markdown files
- **Organized** - Folders, tags, drag & drop
- **Beautiful** - Dark theme, live preview
Enjoy! 📝"
create_note "todo.md" "Quick TODO List" '"task", "todo"' \
"# TODO
## Today
- [x] Fix drag & drop
- [x] Add root drop zone
- [ ] Write documentation
- [ ] Deploy to production
## This Week
- [ ] Add export feature
- [ ] Improve mobile experience
- [ ] Write blog post
## Someday
- [ ] Collaboration features
- [ ] Mobile app
- [ ] Plugin system"
create_note "scratch.md" "Scratch Pad" '"default"' \
"# Scratch Pad
Random thoughts and quick notes...
## Ideas
- Maybe add a daily note feature?
- Graph view of linked notes
- Vim mode for power users
## Links
- https://example.com
- https://github.com/user/repo
## Code Snippet
\`\`\`javascript
const hello = () => {
console.log('Hello World');
};
\`\`\`"
echo "✅ Structure créée avec succès!"
echo ""
echo "📊 Statistiques:"
echo "- Dossiers: $(find . -type d | wc -l)"
echo "- Notes: $(find . -name '*.md' | wc -l)"
echo "- Tags uniques: $(grep -h "^tags:" **/*.md 2>/dev/null | sort -u | wc -l)"