← Projets

ImagiChet

Vertex AIImagen 3TypeScriptGCSVue.jsNuxt 3

Qu'est-ce qu'ImagiChet ?

ImagiChet est un générateur d'images personnel propulsé par Imagen 3 de Google via Vertex AI. Contrairement aux interfaces publiques (Gemini, Google AI Studio), ImagiChet tourne sur un compte GCP privé — permettant un contrôle total sur les prompts, les styles et la gestion des images générées.

Pourquoi Vertex AI plutôt que Gemini public ?

L'API Vertex AI offre plusieurs avantages décisifs pour un usage personnel :

  • Accès direct au modèle sans passer par une interface grand public avec ses limitations UI
  • Intégration native avec le compte de service GCP déjà utilisé pour le stockage et l'IA
  • Flexibilité totale : paramétrage fin de l'aspect ratio, du nombre d'images, du prompt négatif
  • Stockage GCS : chaque image est automatiquement sauvegardée dans le bucket personnel, sans limite de rétention
  • Tarification à l'usage : ~$0,02 par image avec le modèle Fast, pas d'abonnement

Modèle : Imagen 3 Fast

ImagiChet utilise imagen-3.0-fast-generate-001, la variante rapide et économique d'Imagen 3 :

  • Qualité remarquable malgré la vitesse (résolution 1024×1024 en natif)
  • Génération en ~8 secondes contre 15-20s pour le modèle full
  • Support multi-ratio : carré (1:1), paysage (16:9), portrait (9:16)
  • Paramètre addWatermark: false : aucun SynthID visible sur les images personnelles

Styles prédéfinis

Chaque style enrichit automatiquement le prompt avec un suffixe optimisé :

  • Aquarelle : watercolor painting, soft wet brushstrokes, delicate pastel colors
  • Cinématique : cinematic photography, dramatic lighting, 35mm film, shallow depth of field
  • Manga : manga illustration, clean line art, black and white, Japanese anime style
  • Illustration : digital illustration, vibrant colors, flat design, editorial art style
  • Photo réaliste : hyperrealistic photography, 8K resolution, sharp details, professional camera

Architecture technique

Backend (Nuxt 3 / Nitro) :

  • server/utils/imagen.ts — utilitaire d'appel Imagen 3 via fetch natif + service account OAuth2

  • server/api/imagenie/generate.post.ts — génération + sauvegarde PNG en GCS + mise à jour galerie

  • server/api/imagenie/gallery.get.ts — lecture de imagenie/gallery.json

  • server/api/imagenie/image.get.ts — URL signée GCS (1h) pour affichage sécurisé

  • server/api/imagenie/delete.delete.ts — suppression fichier GCS + retrait de l'index

Stockage GCS :

  • Images : imagenie/YYYY/MM/DD/{id}.png

  • Index galerie : imagenie/gallery.json (tableau prepend, plus récent en premier)

  • Chaque entrée contient : id, timestamp, auteur, prompt, style, ratio, chemin GCS

Sécurité :

  • Authentification Google (JWT via Google Identity Services)

  • requireAuth(event) sur chaque endpoint

  • URLs d'images signées temporaires (1h), jamais publiques directement

Flux de génération

  1. L'utilisateur saisit un prompt + sélectionne un style + choisit le ratio
  2. Le frontend envoie POST /api/imagenie/generate avec le Bearer token Google
  3. Le backend enrichit le prompt avec le suffixe de style, appelle Imagen 3 via Vertex AI
  4. L'image PNG est sauvegardée en GCS, l'entrée est ajoutée à gallery.json
  5. L'image est retournée en base64 pour un affichage immédiat sans second aller-retour
  6. La galerie se recharge et affiche toutes les images via URLs signées

Galerie et gestion

  • Affichage grid : 3 colonnes desktop, 2 colonnes mobile
  • Modal plein écran : clic sur une image pour l'agrandir
  • Suppression : bouton 🗑️ sur chaque carte — supprime le fichier GCS et retire l'entrée de l'index
  • Métadonnées : prompt original, style appliqué, date de génération, ratio