From 8dc4900c47fcdef7945cbc58b6cef849a2d02865 Mon Sep 17 00:00:00 2001 From: oabrivard Date: Sat, 21 Mar 2026 21:48:52 +0100 Subject: [PATCH] Remove legacy React/Firebase files, update project metadata - Delete original src/ directory (React components, Firebase, Gemini service) - Delete root package.json, package-lock.json, node_modules/ - Delete vite.config.ts, tsconfig.json, index.html (old React config) - Delete firebase-applet-config.json, firebase-blueprint.json, firestore.rules - Delete metadata.json, README.md - Update .gitignore for new project structure (backend/target, frontend/dist) - Rewrite CLAUDE.md to document the new Rust/SolidJS/Postgres architecture Co-Authored-By: Claude Opus 4.6 (1M context) --- .claude/settings.local.json | 4 +- .gitignore | 4 +- CLAUDE.md | 235 +- README.md | 20 - firebase-applet-config.json | 10 - firebase-blueprint.json | 70 - firestore.rules | 113 - index.html | 13 - metadata.json | 5 - package-lock.json | 5297 ------------------------------- package.json | 39 - src/App.tsx | 146 - src/components/AuthContext.tsx | 39 - src/firebase.ts | 89 - src/index.css | 1 - src/main.tsx | 10 - src/pages/GenerateSynthesis.tsx | 175 - src/pages/Home.tsx | 181 -- src/pages/Settings.tsx | 308 -- src/pages/Sources.tsx | 372 --- src/pages/SynthesisDetail.tsx | 307 -- src/services/geminiService.ts | 318 -- src/types.ts | 60 - tsconfig.json | 26 - vite.config.ts | 24 - 25 files changed, 130 insertions(+), 7736 deletions(-) delete mode 100644 README.md delete mode 100644 firebase-applet-config.json delete mode 100644 firebase-blueprint.json delete mode 100644 firestore.rules delete mode 100644 index.html delete mode 100644 metadata.json delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 src/App.tsx delete mode 100644 src/components/AuthContext.tsx delete mode 100644 src/firebase.ts delete mode 100644 src/index.css delete mode 100644 src/main.tsx delete mode 100644 src/pages/GenerateSynthesis.tsx delete mode 100644 src/pages/Home.tsx delete mode 100644 src/pages/Settings.tsx delete mode 100644 src/pages/Sources.tsx delete mode 100644 src/pages/SynthesisDetail.tsx delete mode 100644 src/services/geminiService.ts delete mode 100644 src/types.ts delete mode 100644 tsconfig.json delete mode 100644 vite.config.ts diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 17252d0..d0e81bf 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -13,7 +13,9 @@ "Bash(cargo test:*)", "Bash(npx tsc:*)", "Bash(npx vitest:*)", - "Bash(npx vite:*)" + "Bash(npx vite:*)", + "Bash(rm -rf src/ node_modules/)", + "Bash(rm -f package.json package-lock.json vite.config.ts tsconfig.json index.html firebase-applet-config.json firebase-blueprint.json firestore.rules metadata.json README.md .DS_Store)" ], "defaultMode": "bypassPermissions" } diff --git a/.gitignore b/.gitignore index 560e689..96ffabb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,3 @@ -node_modules/ -build/ dist/ coverage/ .DS_Store @@ -8,4 +6,4 @@ coverage/ !.env.example backend/target/ frontend/node_modules/ -frontend/build/ +frontend/dist/ diff --git a/CLAUDE.md b/CLAUDE.md index a77d2fe..e650746 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,121 +1,138 @@ -# Documentation Technique et Fonctionnelle : AI Weekly Synth - -## Objectif de l'application -**AI Weekly Synth** est une application web permettant de générer automatiquement des synthèses d'actualités personnalisées et thématisées. Conçue pour la veille technologique ou sectorielle (par défaut centrée sur l'Intelligence Artificielle), elle utilise l'IA générative (Google Gemini) pour rechercher, filtrer, résumer et catégoriser les actualités récentes. L'application est multi-utilisateurs, garantissant à chacun un espace de veille privé et sur-mesure. - -## Fonctionnalités offertes -* **Authentification sécurisée** : Connexion via compte Google (SSO) garantissant la protection des données personnelles. -* **Génération de synthèses par IA** : Recherche sur le web et création de résumés structurés basés sur les paramètres de l'utilisateur. -* **Envoi par email** : Envoi direct de la synthèse via l'API Gmail (OAuth popup pour obtenir un access token). -* **Gestion des sources personnalisées** : Ajout d'URLs spécifiques (blogs, sites d'actualité) avec import/export CSV et import en masse. -* **Configuration sur-mesure (Paramètres)** : - * Choix du thème de veille (ex: "Intelligence Artificielle", "Cybersécurité", "Économie"). - * Définition de la fenêtre de recherche (ex: les 7 derniers jours). - * Personnalisation des catégories de la synthèse (jusqu'à 20 catégories). - * Choix du modèle d'IA (Gemini 3.1 Pro, 3.0 Flash, 3.1 Flash Lite, 2.5 Flash). - * Modification du "prompt" de comportement de l'agent de recherche. - * Export/import des paramètres en JSON. -* **Historique et consultation** : Sauvegarde de toutes les synthèses générées pour une consultation ultérieure, avec liens directs vers les articles sources et suppression avec double confirmation. - -## Structure du projet +# AI Weekly Synth -``` -src/ -├── main.tsx # Point d'entrée React -├── App.tsx # Router, Layout, ProtectedRoute, Login -├── index.css # Import Tailwind uniquement -├── firebase.ts # Init Firebase, helpers auth, gestion erreurs Firestore -├── types.ts # Interfaces (NewsItem, SynthesisData, AppSettings, etc.) + DEFAULT_SETTINGS -├── components/ -│ └── AuthContext.tsx # Provider React Context pour l'authentification -├── pages/ -│ ├── Home.tsx # Dashboard : liste des synthèses avec apercu et suppression -│ ├── GenerateSynthesis.tsx # Declenchement de la generation IA -│ ├── SynthesisDetail.tsx # Lecture detaillee + envoi email + suppression -│ ├── Sources.tsx # CRUD sources personnalisees (unitaire, CSV, masse) -│ └── Settings.tsx # Parametres utilisateur (theme, categories, modele IA, etc.) -└── services/ - └── geminiService.ts # Logique IA : generation 2 passes + validation/scraping URLs -``` - -## Architecture de la solution -L'application repose sur une architecture **Serverless (BaaS - Backend as a Service)**. Il n'y a pas de serveur backend intermediaire. - -* **Frontend** : Application Single Page (SPA) en React 19 qui gère l'interface, le routage (`react-router-dom` v7) et l'état de l'application. -* **Backend / Base de données** : Firebase Firestore (NoSQL) pour stocker les paramètres, les sources et les synthèses. Les requêtes sont faites directement depuis le client React. -* **Sécurité des données** : Les `firestore.rules` garantissent le cloisonnement des données (Multi-tenant). Chaque document possède un champ `authorUid` ou `userId` vérifié à chaque requête (`isDocOwner()`). -* **Intelligence Artificielle** : Le SDK `@google/genai` est appelé directement depuis le frontend. L'outil `googleSearch` est activé pour le "Grounding" (recherche web en temps réel). - -### Pipeline de generation (geminiService.ts) - -La generation s'effectue en **2 passes** : - -1. **Passe 1 - Recherche** : Gemini avec `googleSearch` grounding produit des news brutes par categorie (JSON structure via `responseSchema`). Les categories sont dynamiques, basees sur les `settings.categories` de l'utilisateur (cles `category_0`, `category_1`, etc.). - -2. **Validation/Scraping des URLs** : Chaque URL retournee est verifiee via 3 proxies CORS en cascade (`allorigins` -> `codetabs` -> `corsproxy.io`). Les articles sont filtres si : URL invalide/404, contenu d'erreur (soft 404), ou date de publication trop ancienne (via meta tags, JSON-LD, balise `