Aller au contenu

Outil interne

KCockpit — cockpit de pilotage des cinq SaaS

Cockpit privé qui pilote cinq SaaS : KPI et santé des services, publication quotidienne sur Facebook et Instagram, rapport d'engagement et studio de vidéos UGC générées par IA.

Nature
Outil interne
Stack
NestJSNext.jsPrismaPostgreSQLRedisAPI Graph MetaClaude APIffmpeg

Exploiter cinq SaaS en parallèle, c'est passer sa journée à ouvrir cinq tableaux de bord, cinq pages Facebook et cinq comptes Instagram. KCockpit est un cockpit privé, lancé en local sur un Mac, qui regroupe ce qu'il faut regarder chaque matin et automatise la publication quotidienne.

Ce que fait l'outil

  • Vue d'ensemble : collecte horaire des KPI des cinq produits (inscrits, usage métier), variations sur 24 h et 7 jours, séries sur 30 jours.
  • Santé des services : sonde des sites et des endpoints de métriques, alertes dédupliquées (site injoignable, publication en échec, collecte à l'arrêt), avec notification Telegram ou macOS.
  • Contenu : cinq brouillons par jour, un par produit, avec un angle éditorial tiré d'un pool et jamais répété sur les dix derniers posts. Validation par lot, publication sur Facebook et Instagram (image, carrousel, Reel).
  • Mesure : relevés d'engagement des posts publiés, performance par angle, rapport hebdomadaire et page qui chiffre le coût de chaque appel au modèle.
  • Studio UGC : vidéos verticales avec un créateur IA, du brief au Reel (script, image de départ, rendu via treg, finition locale des sous-titres).

Stack et architecture

  • Monorepo pnpm et Turborepo : API NestJS 11 sur Fastify, Prisma et PostgreSQL, Redis, back-office Next.js 16.
  • Tâches planifiées dans l'API (collecte, génération, publication, détection d'alertes), sans worker séparé.
  • Génération avec l'API Anthropic ; publication via l'API Graph de Meta ; rendu vidéo via treg ; montage avec ffmpeg et sharp.
  • Authentification par cookies httpOnly, rotation du refresh token, rôles vérifiés côté API. Décisions consignées dans des ADR, une soixantaine de fichiers de tests.

Ce qui a été difficile

Le Studio UGC dépense de l'argent à chaque clic. Chaque soumission réserve d'abord sa ligne en base par une mise à jour conditionnelle, porte une clé d'idempotence, et le rendu exige que le coût confirmé soit égal à l'estimation serveur, faute de quoi rien n'est facturé. Autre piège relevé en réel : le modèle raisonne avant de répondre et ce raisonnement compte dans la limite de jetons, ce qui coupait la réponse avant le JSON. La sortie est désormais contrainte par un schéma et la limite relevée.

État du projet

Usage interne, non exposé publiquement. Une valeur absente s'affiche « — » avec sa raison, jamais un chiffre estimé.

Captures réalisées sur une base de démonstration : les chiffres affichés sont fictifs.