SpecCraft est un outil de rédaction et de maintenance de cahiers des charges structurés pour des projets de développement informatique.
Démo en ligne : speccraft-ww9f.onrender.com
L'application s'appuie sur des données mockées (aucun backend réel n'est nécessaire pour la faire tourner) mais l'architecture est pensée pour en accueillir un par la suite : schémas Zod comme source de vérité des types, Route Handlers Next.js jouant le rôle d'API, hooks TanStack Query côté client — remplacer le mock par un vrai backend ne demande de toucher qu'à la couche Route Handlers. Exception assumée : l'assistance IA à la rédaction (voir ci-dessous) appelle un vrai service externe, seule brique non mockée du projet.
Projet de démonstration : volontairement sans authentification ni notion de compte (un seul jeu de données mock partagé), pour rester focalisé sur le cœur de métier.
- Liste (
/) — les cahiers des charges existants, recherche par mot-clé, création et suppression - Détail (
/specifications/[id]) — informations du cahier des charges (nom, version, dates), édition de son contenu section par section, brouillon et publication, export au format Markdown
- Créer, consulter, modifier et supprimer un cahier des charges
- Structurer le contenu en sections/sous-sections selon un template fixe
- Rechercher un cahier des charges par mot-clé
- Éditer une section (devient un brouillon une fois enregistrée) puis publier (valide les brouillons en attente, incrémente la version)
- Exporter un cahier des charges au format Markdown
- Assistance IA à la rédaction (Gemini, quota gratuit) : génération section par section ou pré-remplissage de tout le cahier des charges à partir d'un brief projet, avec un format adapté par section (paragraphe, liste à puces ou étapes numérotées)
npm install
npm run devL'application est ensuite accessible sur http://localhost:3000.
L'assistance IA à la rédaction appelle l'API Gemini (quota gratuit, aucune carte bancaire requise) :
- Récupérer une clé API sur aistudio.google.com (bouton « Get API key »).
- Créer un fichier
.env.localà la racine du projet :GEMINI_API_KEY=ta_clé - Redémarrer
npm run dev.
Sans cette clé, le reste de l'application (CRUD, recherche, brouillon, publication, export) fonctionne normalement — seule la génération IA renvoie une erreur explicite.
Un seul service web Render (render.yaml à la racine, plan gratuit), déployé automatiquement à chaque commit sur main. Variable d'environnement requise : GEMINI_API_KEY (clé API Gemini, saisie manuellement dans le dashboard Render — jamais commitée).
Le plan gratuit met le service en veille après 15 minutes d'inactivité (~1 minute pour redémarrer au prochain accès) : la donnée mockée étant régénérée en mémoire à chaque démarrage, ce comportement se combine naturellement avec la limite ci-dessous plutôt que de la contredire.
Les données sont générées en mémoire au démarrage du serveur et les modifications (brouillons, publications, créations, suppressions) vivent le temps du processus Next.js : elles sont réinitialisées à chaque redémarrage. Aucune donnée n'est persistée sur disque ou en base — c'est un choix délibéré pour une démo frontend-only.
L'assistance IA repose sur le tier gratuit de l'API Gemini (modèle gemini-3.1-flash-lite par défaut) : quota limité (15 requêtes/minute, 500/jour), et le modèle peut occasionnellement refuser une génération en cas de forte demande sur le tier gratuit. Le pré-remplissage global espace ses appels et continue sur les sections suivantes en cas d'échec ponctuel (sections en échec listées et relançables individuellement), mais reste soumis à cette limite. Le contenu généré atterrit toujours dans le brouillon de la section, jamais publié automatiquement.

