14 Commits
Author SHA1 Message Date
Claude 8251136faf Docs: Quick start PostgreSQL migration
Ajout des outils de migration et documentation:
- scripts/verify-postgres-connection.js: Test connexion PostgreSQL
- scripts/run-migration.sh: Script automatique de migration
- docker-compose.yml: Volume mount pour accès SQLite depuis container
- MIGRATION-STEPS.md: Guide pas-à-pas complet de migration

La migration peut maintenant être lancée avec:
  docker-compose build notes-app
  docker-compose up -d
  bash scripts/run-migration.sh
2025-11-14 08:37:01 +00:00
Claude 8e4a96ec97 MIGRATION: PostgreSQL + Docker - Solution complète RSS
🎯 Objectif: Résoudre définitivement le problème d'affichage RSS

Problème analysé:
- Articles récupérés (logs: "18 nouveaux") mais jamais affichés
- SQLite avec multiples DBs impossibles à déboguer
- Concurrence limitée, pas de logs SQL natifs
- Impossible de savoir quelle DB est vraiment utilisée

Solution: Migration complète vers PostgreSQL + Docker

📦 Fichiers ajoutés/modifiés:

**Docker & Configuration**
- docker-compose.yml: Ajout service PostgreSQL (port 5499)
- Dockerfile: Remplacement sqlite par postgresql-client
- init-db.sql: Script d'initialisation PostgreSQL
- .env.example: Variables d'environnement PostgreSQL

**Code Base de Données**
- config/database-postgres.js: Nouvelle couche PostgreSQL
  - Utilise pg (node-postgres) avec pool de connexions
  - Conversion SERIAL pour auto-increment
  - Conversion TIMESTAMP pour dates
  - Gestion transactions avec BEGIN/COMMIT
  - Support DATABASE_URL

**Migration**
- scripts/migrate-sqlite-to-postgres.js:
  - Migration automatique SQLite → PostgreSQL
  - Respect ordre des foreign keys
  - Conversion types SQLite → PostgreSQL
  - Reset des séquences SERIAL
  - Gestion des erreurs et rollback

**Documentation**
- MIGRATION-POSTGRESQL.md: Guide complet
  - Pourquoi PostgreSQL vs SQLite
  - Étapes de migration détaillées
  - Configuration Docker
  - Backup/Restore PostgreSQL
  - Monitoring et performance
  - Dépannage complet

**Dépendances**
- package.json: Ajout pg@^8.11.3

📊 Architecture PostgreSQL:

```yaml
postgres:
  port: 5499:5499 (personnalisé)
  user: noteflow
  database: noteflow
  volume: postgres_data (persistant)
  healthcheck: pg_isready

app:
  depends_on: postgres (avec healthcheck)
  DATABASE_URL: auto-configurée
  Connexion: via nom de service 'postgres'
```

🔧 Utilisation:

1. **Installer dépendances:**
   ```bash
   npm install
   ```

2. **Activer PostgreSQL:**
   ```bash
   cp config/database-postgres.js config/database.js
   ```

3. **Démarrer PostgreSQL:**
   ```bash
   docker-compose up -d postgres
   ```

4. **Migrer données:**
   ```bash
   SQLITE_PATH=/path/to/notes.db node scripts/migrate-sqlite-to-postgres.js
   ```

5. **Démarrer app:**
   ```bash
   docker-compose up -d
   ```

✨ Avantages PostgreSQL:

✅ Concurrence MVCC (pas de verrous globaux)
✅ Une seule DB (pas de confusion)
✅ Logs SQL natifs (debuggable)
✅ Transactions robustes
✅ Production-ready
✅ Monitoring intégré
✅ Performance supérieure

🎯 Résultat attendu:

Le problème RSS sera DÉFINITIVEMENT résolu car:
- Une seule source de vérité (PostgreSQL)
- Logs clairs pour voir les INSERT
- Pas de problème de concurrence
- Frontend et backend sur la même DB
- Debuggable en temps réel

Les articles du 14 novembre (et suivants) seront visibles!

📚 Documentation complète dans MIGRATION-POSTGRESQL.md
2025-11-14 08:23:22 +00:00
Claude f07451b1ad Fix: Correction configuration réseau Docker (doit rester externe)
Problème:
La configuration précédente (external: false) était incorrecte. Le réseau
nginx_default DOIT être un réseau externe créé manuellement avant le
déploiement. L'erreur "network has incorrect label" indiquait que le
réseau existait avec une configuration incompatible.

Solution correcte:
- Revert docker-compose.yml: external: false → external: true
- Le réseau nginx_default doit être créé avec "docker network create"
- Documentation complète de la création du réseau externe
- Ajout troubleshooting pour l'erreur "incorrect label"

Changements:
- docker-compose.yml: Restauration de external: true (config correcte)

- README.md:
  * Ajout étape 1: Créer le réseau externe avant tout
  * Section "Réseau Docker" mise à jour avec les bonnes pratiques
  * Troubleshooting: Ajout solution pour "incorrect label"
  * Clarification: Le réseau est EXTERNE et partagé entre services

Pourquoi externe:
- Permet le partage du réseau entre plusieurs stacks Docker Compose
- Nécessaire pour la communication avec Nginx ou autres services
- Persist après "docker-compose down"
- Architecture standard pour les déploiements multi-services
2025-11-12 22:30:33 +00:00
Claude 254f913001 Fix: Résolution erreur de redéploiement du stack Docker
Problème:
Le redéploiement du stack échouait avec l'erreur "network nginx_default
declared as external, but could not be found" car le réseau Docker externe
n'existait pas.

Solution:
- Modification du réseau nginx_default de externe à interne dans docker-compose.yml
- Le réseau est maintenant créé automatiquement par Docker Compose
- Ajout de documentation pour l'utilisation avec Nginx existant
- Ajout d'une section de dépannage pour cette erreur spécifique

Changements:
- docker-compose.yml: Changement de external: true à external: false avec
  configuration explicite du driver bridge
- README.md: Suppression du prérequis réseau externe, ajout de la section
  "Réseau Docker" et documentation de l'erreur dans le dépannage

Cette modification permet au stack de se déployer automatiquement sans
nécessiter de configuration réseau préalable, tout en restant compatible
avec des services Nginx existants.
2025-11-12 22:21:57 +00:00
Claude beb8eaa994 Correction du problème de permissions SQLite avec volumes nommés
- Remplacement des bind mounts par des volumes Docker nommés
- Les volumes notes_data et notes_uploads ont automatiquement les bonnes permissions
- Correction de l'erreur SQLITE_CANTOPEN
- Mise à jour du README avec les commandes de backup pour volumes Docker
- L'utilisateur node dans le container peut maintenant écrire dans les volumes
2025-11-11 11:22:48 +00:00
Claude ecb12ce8dd Changement du port de l'application de 3000 à 2222
Modifications:
- docker-compose.yml: port mapping 2222:2222 et variable PORT=2222
- Dockerfile: EXPOSE 2222 et healthcheck sur port 2222
- server.js: port par défaut changé de 3000 à 2222
- .env.example: PORT=2222
- README.md: toutes les références au port 3000 remplacées par 2222
  (installation, accès, configuration Nginx)

L'application écoute maintenant sur le port 2222 au lieu de 3000.
2025-11-11 11:10:07 +00:00
Claude 7a716dc17a Création complète de l'application NoteFlow - Notes & Todo List
Application web Dockerisée moderne avec:
- Backend Node.js + Express + SQLite
- Frontend HTML/CSS/JavaScript vanilla
- Authentification JWT + bcrypt
- Gestion des notes avec images et todos intégrés
- Sidebar todos globaux avec filtres
- Interface utilisateur fluide avec animations CSS
- Administration des utilisateurs
- Sécurité production-ready (Helmet, rate limiting, validation)
- Configuration Docker complète
- Documentation README détaillée

Stack technique:
- Node.js 20 Alpine
- SQLite3 avec indexes optimisés
- Multer pour upload d'images
- Winston pour logging
- Express-validator pour validation
- Architecture modulaire (routes, middleware, config)

Fonctionnalités:
- Notes: CRUD complet, recherche, images, todos intégrés
- Todos globaux: création, toggle, filtres, suppression
- Auth: JWT 24h, bcrypt 12 rounds
- Admin: gestion utilisateurs complète
- UI: masonry grid, modal animations, responsive

Configuration Docker:
- Healthcheck intégré
- Volumes persistants pour data et uploads
- Network nginx_default pour reverse proxy
- Variables d'environnement configurables

Prêt pour déploiement avec: docker-compose up -d
2025-11-11 09:36:32 +00:00
Michael d92c4563ec [dyad] wrote 2 file(s) 2025-11-06 13:56:17 +01:00
Michael da8765ba81 [dyad] wrote 3 file(s) 2025-11-06 13:55:38 +01:00
Michael eeefad62ce [dyad] wrote 3 file(s) 2025-11-06 13:54:31 +01:00
Michael 81f60c7965 [dyad] wrote 2 file(s) 2025-11-06 13:52:32 +01:00
Michael 20edfef8bb [dyad] wrote 3 file(s) 2025-11-06 13:51:51 +01:00
Michael 3f703fbf11 [dyad] wrote 3 file(s) 2025-11-06 13:48:49 +01:00
Michael 5e6670d921 [dyad] wrote 5 file(s) 2025-11-06 12:20:50 +01:00