- L'utilisateur peut se connecter.
- L’utilisateur peut voir la liste de ses discussions passées.
- L’utilisateur peut démarrer une nouvelle discussion ou reprendre une ancienne discussion.
- Un utilisateur n’est pas autorisé à accéder aux discussions d’un autre utilisateur.
- Le LLM répond aux messages envoyés par l’utilisateur.
- L'utilisateur peut faire générer une revue de presse à partir d'une discussion.
- L'application doit afficher des messages d'erreur à l'utilisateur final en cas d'erreur.
- Docker
- Python 3.13
- uv
- Node.js 22.19
- Cloner le repository
- Démarrer le backend aved les instructions du fichier
backend/README.md - Initialiser un projet Next.js dans un dossier
frontend/
Next.js
- Python pour bénéficier de son écosystème de librairies IA
- FastAPI pour le développement de l'API
- Connection avec des JWT
- SQLModel comme ORM : fait pour bien marcher avec FastAPI.
- Branché à une base de données PostgreSQL
- PydanticAI comme client qui s'intégrera aussi bien avec les autres outils de la stack backend
- Attention à la sécurité des données. On ne veut pas qu’un utilisateur puisse accéder aux chats d’un autre utilisateur ou les modifier.
- Le produit aura rapidement beaucoup d’utilisateurs professionnels il est donc crucial de garantir le fonctionnement correct de cette fonctionnalité par l'implémentation de tests automatisés qui s'exécutent par une Github Action.
- Pour les sources de news, on utilisera l’API WorldNewsAPI.
- Pour déployer on mettra le frontend sur Vercel et le backend sur Railway.
Le dossier docs/ centralise la documentation de livraison :
docs/ARCHITECTURE_ET_CHOIX_TECHNIQUES.md— architecture du dépôt, arborescence des dossiers, commandes pour lancer les tests, choix techniques et raisons.docs/EVOLUTIONS_IA.md— pistes d’amélioration qualité / performance de la partie IA (métriques, implémentations possibles, objectifs mesurables).docs/REGARD_CRITIQUE_PERFORMANCE.md— regard critique sur la fluidité et la qualité des résultats (streaming, MLflow, temps de revue, pistes réalisables).docs/API_ERREURS.md— référence des erreurs HTTP /detailrenvoyés par l’API.docs/PROMPTS.md— justification des choix de prompts (chat, revue, RAG).docs/GRILLE_LIVRABLES.md— tableau de correspondance entre critères de livrables et fichiers du dépôt.docs/DEPLOIEMENT.md— production Railway + Vercel, déploiement automatique surmain, variables.
Pour Postgres, Alembic et variables d’environnement du backend, voir backend/README.md.
En production, le backend et la base PostgreSQL sont hébergés sur Railway, le frontend sur Vercel. Les deux plateformes peuvent être reliées au dépôt Git : un push sur la branche main déclenche un nouveau déploiement (build + mise en ligne). Détail et checklist : docs/DEPLOIEMENT.md.
| | |
|--|--|https://news-foundry-nvpt-git-main-pad189-codes-projects.vercel.app/
| URL du déploiement | Renseigner ici l’URL affichée dans le dashboard Vercel (ex. https://<votre-projet>.vercel.app ou domaine personnalisé). |
| Où la trouver | Tableau de bord Vercel : dernier déploiement Production → Visit, ou Settings → Domains. |
| Variable côté Vercel | NEXT_PUBLIC_API_URL = URL HTTPS du backend Railway (voir ci‑dessous). |
| Variable côté backend Railway | CORS_ORIGINS doit contenir l’origine exacte du frontend (URL Vercel). |
| URL de base | https://newsfoundry-api-production.up.railway.app |
| Documentation OpenAPI | https://newsfoundry-api-production.up.railway.app/docs |
| Santé | GET https://newsfoundry-api-production.up.railway.app/health → {"message":"ok","app":"newsfoundry-api"} |
Exemple pour la variable Vercel : NEXT_PUBLIC_API_URL = https://newsfoundry-api-production.up.railway.app (le client frontend/src/lib/api.ts assemble les chemins ; pas de slash final inutile).
Projet lié au dépôt Git ; branche de production : main ; Root Directory : frontend. Chaque push sur main déclenche un déploiement production.
Service API sur Railway : railway.toml à la racine fixe le Docker backend/Dockerfile (contexte = racine du monorepo — ne pas mettre le Root Directory Railway sur backend/ seul). Variable de secours possible : RAILWAY_DOCKERFILE_PATH = backend/Dockerfile.
PostgreSQL : ajouté dans le même projet Railway ; DATABASE_URL référencée par le service API.
Variables du service API : DATABASE_URL ; JWT_SECRET ; clés GOOGLE_API_KEY, OPENAI_MODEL, WORLDNEWS_API_KEY, etc. ; CORS_ORIGINS = URL du frontend Vercel. Ne pas activer SEED_DEFAULT_USER en production.
Après déploiement : GET https://newsfoundry-api-production.up.railway.app/health → {"message":"ok","app":"newsfoundry-api"}.
Pour retrouver la configuration de développement qui fonctionne (Mistral, port HTTP 8000, proxy Next, SQLite, etc.), voir docs/CONFIG_LLM_REFERENCE.md — sans secrets ; les clés restent dans les fichiers .env ignorés par Git.