Successfully configured and connected PostgreSQL database for NoteFlow.
Backend changes:
- Added dotenv package and configured .env loading in server.js
- Increased PostgreSQL connection timeout from 2s to 10s
- Added connection URL logging for debugging
- Configured to use PostgreSQL on port 5432 (instead of 5499)
PostgreSQL setup:
- Installed PostgreSQL 16 locally
- Created 'noteflow' database and user
- Fixed SSL certificate permissions
- Configured TCP listening on localhost
- Set up password authentication (md5)
Database configuration:
- Uses .env file for DATABASE_URL and credentials
- Connection: postgresql://noteflow:***@localhost:5432/noteflow
- All tables created and initialized successfully
- Admin user created (username: admin, password: admin)
This resolves the "no notes displaying" issue. The application now
connects to a working PostgreSQL database and can store/retrieve notes.
Files changed:
- server.js: Added dotenv.config() at top
- config/database.js: Increased timeout, added logging
- package.json: Added dotenv dependency
- config/database-postgres.js: Backup of PostgreSQL config
Images multiples :
- Ajout table note_images dans la base de données
- Routes POST/GET/DELETE /api/notes/:id/images
- Dossier uploads/images séparé pour les images
- Support de plusieurs images par note
Google Calendar :
- Ajout table calendar_events
- Routes /api/calendar pour sync et récupération des événements
- Box Rendez-vous dans l'interface avec affichage des événements à venir
- Configuration Google Calendar dans l'admin (API key et Calendar ID)
- Synchronisation manuelle avec Google Calendar API
- Installation package googleapis
Corrections :
- Fix RichTextEditor: ajout dir="ltr" pour empêcher l'écriture RTL
- Fix Image type conflict (lucide-react vs Note interface)
- Ajout original_name à l'interface Image pour compatibilité
Interface :
- Box Rendez-vous empilée avec Todos et RSS dans la colonne droite
- Nouvel onglet Google Calendar dans l'administration
- Bouton "Synchroniser" pour rafraîchir les événements
Corrections pour résoudre les conflits de dépendances npm:
- @dyad-sh/react-vite-component-tagger: 0.0.6 → 0.8.0 (version valide)
- date-fns: 4.1.0 → 3.6.0 (compatible avec react-day-picker)
- react-day-picker: 8.10.1 → 9.11.1 (compatible avec React 19)
Génération de package-lock.json avec toutes les dépendances résolues.
Installation réussie avec 702 packages.
## Base de données:
- Table settings (key-value pour paramètres globaux)
- Table rss_feeds (url, title, description, enabled, last_fetched_at)
- Table rss_articles (feed_id, title, link, description, pub_date, content)
- Index optimisés pour performance
## Routes Settings (/api/settings):
- GET /api/settings - Récupérer tous les paramètres
- GET /api/settings/:key - Récupérer un paramètre
- PUT /api/settings/:key - Mettre à jour un paramètre
- DELETE /api/settings/:key - Supprimer un paramètre
- Middleware requireAdmin sur toutes les routes
## Routes RSS (/api/rss):
- GET /api/rss/feeds - Liste des flux RSS (admin)
- POST /api/rss/feeds - Ajouter flux RSS avec parsing validation (admin)
- PUT /api/rss/feeds/:id - Activer/désactiver flux (admin)
- DELETE /api/rss/feeds/:id - Supprimer flux (admin)
- POST /api/rss/fetch - Récupérer articles de tous flux actifs (admin)
- GET /api/rss/articles - Récupérer 10 derniers articles (tous users)
- POST /api/rss/summarize - Générer résumé OpenRouter (admin)
- GET /api/rss/models - Liste modèles OpenRouter (admin)
## Intégration OpenRouter:
- Appel API avec clé, modèle et prompt configurables
- Résumé intelligent des 10 derniers articles
- Prompt par défaut optimisé pour résumés d'actualités
- Support GPT-4, Claude 3, Gemini, Llama 3, Mistral, etc.
- Gestion erreurs et timeout
## Parser RSS:
- rss-parser installé pour parsing flux
- Gestion articles avec contenu, description, date
- Détection doublons par URL
- Update automatique infos flux
## Frontend HTML:
- Modal admin avec système à onglets (Users/RSS/OpenRouter)
- Modal changement mot de passe sans prompt navigateur
- Box RSS dans page principale affichage 10 derniers articles
- Bouton résumé IA dans header box RSS
- Inputs pour gestion flux RSS
- Configuration OpenRouter (API key, modèle, prompt, activation)
- Sélecteur modèles avec recherche
Prochaine étape: CSS + JavaScript pour fonctionnalités