Je propose de commencer cet article en répondant à cette question simple : qu'est-ce que Magic the Gathering ?
Magic the Gathering est le premier jeu de cartes à jouer et à collectionner créé par Richard Garfield et édité par Wizards of the Coast en 1993.
Ce qui fait la différence avec un jeu de cartes traditionnel, c'est qu'il existe plus de 35 000 cartes différentes parmi lesquelles deux joueurs ou plus vont faire une sélection pour se constituer ce qu'on appelle un deck (généralement entre 40 et 100 cartes).
Ils peuvent alors s’affronter durant une partie qui sera régie par un ensemble de règles définissant la manière de piocher dans son deck, de jouer des cartes ou d'interagir avec les éléments du jeu et avec son ou ses adversaires.
Wizards of the Coast, l'éditeur du jeu, imprime les cartes du jeu et les rend généralement disponibles à l'achat dans des paquets scellés appelés boosters. Les cartes ainsi imprimées sont arrangées aléatoirement dans ces boosters. En somme, vous ne pouvez pas acheter une carte que vous avez spécifiquement choisie auprès de Wizards of the Coast (sauf exceptions). Vous devez acheter suffisamment de boosters jusqu'à obtenir la carte souhaitée.
Vous comprenez ainsi aisément comment fonctionne le business model d'un jeu de cartes à jouer et à collectionner.
Et c'est aussi pour ça que certaines cartes, très recherchées et rarement trouvées dans des boosters peuvent se vendre à plusieurs milliers d'euros (une Black Lotus Alpha en mauvais état se négocie entre 30 000 et 55 000 €) !
Ma petite histoire avec Magic
Je suis passionné par le jeu de cartes Magic the Gathering auquel je joue depuis plus de 30 ans.
En l'occurrence, j'aime jouer à Magic dans le format Duel Commander, une variante compétitive du Commander Multi qui cherche à utiliser tous les sorts les plus puissants disponibles dans le jeu pour battre rapidement son adversaire.
Le problème avec les sorts puissants, c'est que les cartes associées peuvent coûter très cher ! Ainsi, il n'est pas rare de voir un deck compétitif coûter plus de 1800€. C'est inabordable !
Comme je joue depuis longtemps j'ai pu revendre pas mal de mes cartes pour me faire un ou deux decks compétitifs. C'est suffisant pour affronter d'autres joueurs dans des tournois.
Par contre, pour être performant en tournoi, il faut s'entraîner et le mieux c'est d'avoir un jeu de plusieurs autres decks qui correspondent à la typologie des decks qu'on peut retrouver en tournoi (souvent appelée la méta). La plupart des défaites à Magic sont associées à de mauvaises décisions qu'on peut prendre parce qu'on a mal interprété une situation de jeu. L'entraînement est donc essentiel pour monter en compétence.
Déjà qu'acheter un deck, c'est onéreux... Alors imaginez acheter tous les decks de la méta !
Heureusement, plusieurs solutions s'offrent à nous, et tout particulièrement le fait d'imprimer (ou de faire imprimer) ce qu'on appelle des proxies, des copies de cartes officielles. Wizards of the Coast, l'éditeur du jeu Magic the Gathering, autorise l'utilisation de proxies dans le cadre personnel, en accord avec le fair use de la législation américaine. Bien entendu, l'utilisation de proxies en tournoi officiel homologué par Wizards of the Coast est strictement interdite. Il faut également veiller à ce que vos proxies soient distinguables facilement de vraies cartes. Il est évidemment interdit (et puni par la loi) de vendre des proxies pour de vraies cartes.
Pour imprimer des proxies, on peut :
- Utiliser un site de génération de proxies à imprimer (comme https://mtgprint.net)
- Passer une commande auprès d'un professionnel (comme https://www.makeplayingcards.com)
Utilisation d'un site de génération de proxies
Si on regarde ce que propose un site comme https://mtgprint.net, on retrouve tout ce qu'on attend d'un tel site :
- Pouvoir ajouter des marques de découpe
- Pouvoir sélectionner le design souhaité de chaque carte (parmi tous les designs officiels existants)
- Mettre un marqueur indiquant qu'il s'agit d'un proxy
- Générer un PDF à imprimer
Ces fonctionnalités peuvent convenir à la majorité des joueurs. Pour ma part, j'y vois quelques inconvénients qui me motivent à trouver une autre solution :
- La résolution des images des cartes récupérées n'est pas optimale (200dpi au lieu d'un minimum de 300 pour avoir une belle impression)
- Les marqueurs utilisés pour indiquer qu'il s'agit de proxies sont laids et énormes
- Il n'y a aucun design non-officiel, que l'on peut retrouver dans la communauté
Passer par un imprimeur professionnel
On peut aussi passer par des professionnels dont c'est le métier d'imprimer des cartes. En l'occurrence c'est le cas de https://www.makeplayingcards.com (résumé en MPC) qui est un imprimeur hongkongais qui exerce dans l'impression de cartes à jouer depuis plus de 40 ans.
Ils ont notamment une offre dédiée à la création de decks custom de cartes dont on fournit le design.
Comme c'est un imprimeur professionnel, il faut que les designs fournis incluent ce qu'on appelle le "fond perdu", une zone de ce qu'on imprime qui sera découpée, ce qu'on ne retrouve pas dans les designs officiels (ils sont déjà découpés). Ils doivent également être en haute résolution, idéalement à 800dpi minimum.
Ensuite, pour un deck de 100 cartes, il faudra créer une commande en soumettant le design choisi pour chaque carte ainsi que le design pour chaque face arrière des cartes... C'est un processus très (très) long.

C'est là que la communauté intervient pour simplifier tout ça avec le site https://mpcfill.com !
MPC Fill c'est un projet GitHub qui permet notamment à des artistes de partager des designs alternatifs pour les cartes Magic, en respectant une convention bien établie, généralement via un partage Google Drive.

Le site MPC Fill permet de fournir une liste de cartes que l'on veut imprimer, sélectionner un design parmi ceux partagés par la communauté pour chaque carte de la liste, et de télécharger un fichier XML représentatif de votre sélection.
À quoi sert ce fichier XML me diriez-vous ? Eh bien c'est à partir de là que réside toute la magie de MPC Fill.
Le projet fournit également un script en ligne de commande qui :
- Télécharge tous les designs des cartes sélectionnées,
- Downscale la résolution à 800dpi (résolution recommandée pour le site Make Playing Cards),
- Pilote automatiquement un navigateur pour créer la commande sur MPC.
Et si j'imprimais ça moi-même ?
J'ai déjà commandé sur MPC et généralement, je passe par le plus gros lot possible de plus de 600 cartes. Ça me permet notamment d'économiser sur les frais de port.
Au moment de passer à la caisse, je vois que ma commande va coûter 177€ ! C'est sûr c'est plus abordable que de payer les 10.000€ des versions officielles des cartes mais tout de même...
C'est à ce moment que je me suis dit : et si j'imprimais moi-même mes proxies ? J'ai déjà expérimenté cette pratique mais depuis, on a beaucoup de retours de passionnés sur Internet avec des techniques donnant des résultats plus que corrects.
L'idée est simple : reprendre les designs des cartes que j'avais sélectionnées sur MPC Fill, les intégrer dans un template Inkscape (logiciel de dessin vectoriel Open Source) avec une gestion de fonds perdus et des marques de découpe.

Le template est ainsi constitué :
- Un espace réservé à chaque design de carte (mis en couleur pour bien distinguer leur positionnement),
- Des marqueurs de découpe sur les bords et aux coins des cartes,
- Une mention "Proxy - not for sale" sur le design de chaque carte,
- Des guides positionnés pour gérer correctement les fonds perdus.
Pour un deck de 100 cartes, il faudra certes imprimer 12 planches et les découper... Mais avant ça il faut préparer toutes les planches avec les designs que l'on souhaite utiliser :
- Récupérer chaque design souhaité pour chaque carte du deck via MPC Fill (on a une fonction download, donc ça va),
- Dans Inkscape, importer chaque image (qui contient un fond perdu je le rappelle),
- Pour chaque image, la positionner sur les bons guides pour qu'elle soit bien cadrée, juste sous le masque correspondant (voir l'illustration ci-dessous),

- Sélectionner le masque de l'image et l'image et utiliser la fonction "Définir une découpe" d'Inkscape : l'image sera tronquée comme sur l'illustration ci-dessous.

Pour préparer une planche, je passe en moyenne 20 minutes.
Ça fait environ 4 heures pour un deck... Sans compter le temps passé à tout imprimer et découper.
Inkscape utilise le format SVG, qui est bien documenté.
Parti de ce constat, et sans grande conviction, je me suis dit : "et si j'arrivais à vibe coder une application qui fasse exactement tout ça à ma place ?"
Le vibe coding pour implémenter un MVP
Pour cet essai, je ne voulais pas sortir l'artillerie du développeur augmenté par AI coding agent (comme Cursor ou Claude Code) mais bel et bien vibe coder !
Le vibe coding, c'est l'art de produire du code sans manipulation du code généré, à l'aide d'un assistant IA. Tout le monde peut faire du vibe coding et c'est ce qui en fait son intérêt.
Attention, je ne fais pas la promotion de cette pratique pour remplacer les développeurs !
Au contraire, je pense qu'il s'agit là d'un outil parfaitement complémentaire à ce qu'un ingénieur en développement ou une équipe de dev pourrait produire.
En plus, c'est accessible rapidement à un coût dérisoire, sinon gratuit. Alors pourquoi s'en priver ?
Vibe coder quand on est chargé.e de communication, ça permet d'obtenir des résultats très intéressants sans rien n'y connaître en développement... Jusqu'aux limites du modèle.
Quand on est ingénieur en développement, c'est différent.
L'IA ne travaille pas seulement pour nous, on travaille en collaboration avec l'IA.
Contrairement à un non-développeur, un ingénieur en développement peut formuler des demandes et effectuer des analyses techniques et précises.
C'est un atout indéniable que je voulais expérimenter dans un cas réel, donc on est dans la configuration parfaite.
Quel outil de vibe coding ?
Des outils pour vibe coding, il y en a plein.
Mon attention s'est cependant tourné vers celui de Google : Google AI Studio.
En effet, durant le DevFest Nantes 2025, j'ai pu assister à la conférence de Guillaume Vernade : "Abracadabra ! Donnez vie à vos idées avec Google AI Studio".
Ce que je recherche dans un outil de cette catégorie :
- Avoir une fenêtre de prévisualisation de l'application en cours de développement,
- Une gestion de projet de développement avec plusieurs fichiers,
- Une mécanique pour gérer le versioning de l'application et la possibilité de revenir en arrière.
C'est exactement ce que propose Google AI Studio, donc c'est l'outil qui convient à la situation !
Le system prompt de mon appli
Maintenant que j'ai l'outil, il faut le cahier des charges... C'est-à-dire du "system prompt" pour mon application.
On pourrait le comparer au fichier d'instruction GEMINI.md si on développe un projet avec Gemini CLI ou encore aux spécifications si on utilise un outil de SDD (Specifications Driven Development).
En l'occurence voici ce que j'ai donné à manger à Google AI Studio :
An application to help Magic: The Gathering players generate printable proxy sheets from a decklist using a custom Inkscape SVG template. It fetches card versions from mpcfill.com and allows the user to select their preferred art before generating the final SVG files.
Bien sûr ça n'a pas marché comme prévu... Même si Google AI Studio avait bien interprété l'objet initial de ma demande, il lui manquait des éléments précis pour aboutir au résultat attendu.
C'est là que mes pouvoirs d'ingénieur en développement logiciel pourraient justement servir pour aider cette pauvre IA ! 😄
Guider techniquement l'IA jusqu'au MVP
Mon objectif initial était simple : valider la faisabilité technique d'un tel projet.
Une IA allait-elle réellement pouvoir refaire tout ce que je peinais à faire manuellement ? J'avoue que ça me semblait illusoire.
Alors je me suis donné comme tâche de valider les fonctionnalités minimales que cette application devait avoir :
- Récupérer une liste de cartes et permettre à l'utilisateur de choisir un design parmi ceux proposés par le site MPC Fill pour chaque carte,
- Récupérer le template Inkscape que j'ai créé et insérer les designs sélectionnés dans les emplacements attendus pour que l'utilisateur puisse télécharger chaque page à générer (9 cartes par page).
De cette manière, j'aurais mon MVP et la preuve que le vibe coding est capable de produire des solutions exploitables.
Récupération des designs sur MPC Fill
Lorsque j'ai annoncé à Google AI Studio qu'il devait récupérer les designs des cartes d'une liste fournie à partir de MPC Fill, il n'a pas fait de miracle.
Comment pouvait-il réellement décortiquer sans aide MPC Fill et reproduire à l'identique les fonctionnalités du site ?
C'est ainsi que je me suis dit que j'allais lui donner des éléments que j'aurais moi-même tenté de glaner pour avancer vers cet objectif : l'analyse du fonctionnement du site !

J'ai alors tout simplement utilisé les Dev Tools de mon navigateur (avec la touche F12), activé le panneau Network et utilisé l'outil MPC Autofill de MPC Fill.
Je remarquais alors qu'après avoir soumis au site ma liste de cartes, mon navigateur effectuait notamment une requête vers le endpoint https://mpcfill.com/2/editorSearch/ en POST avec en body une structure de données formatée en JSON du type :
{
"searchSettings": {
"searchTypeSettings": {
"fuzzySearch": false,
"filterCardbacks": false
},
"sourceSettings": {
"sources": [
[
1,
true
],
[
2,
true
],
[
3,
true
],
// ( je vous épargne toutes les valeurs entre 4 et 261)
[
262,
true
]
]
},
"filterSettings": {
"minimumDPI": 0,
"maximumDPI": 1500,
"maximumSize": 30,
"languages": [],
"includesTags": [],
"excludesTags": [
"NSFW"
]
}
},
"queries": [
{
"query": "aetherize",
"cardType": "CARD"
},
{
"query": "archmages charm",
"cardType": "CARD"
},
{
"query": "brainstorm",
"cardType": "CARD"
}
// (je vous économise la lecture de 96 autres noms de cartes)
]
}Et si je regarde la sortie, j'ai ceci :
{
"results": {
"aetherize": {
"CARD": [
"1_C-VKpz5AoTbkQugCTq0Sn0OBrE0pcZP",
"189EZfCNYnvsYOwHGq_ATGeOUqRhfF2EM",
"1ls3THAyKEUmzPgydus9wwPuCMInzvIHk"
]
},
"archmages charm": {
"CARD": [
"1JfCCpOEKt5Li2BqyvPEdlYHntsEH7Bbl",
"1FlwxP-JiqT16sx9y6AshMnWoj-BhEF3J",
"1NkSHR_J86vwRvfbtRzf5x-YZxpl_6vZz"
]
},
"brainstorm": {
"CARD": [
"1ZcSmYd2qHu9PnpMQSNVI8QKYjLp09lWc",
"1zuaW8mFzqZQ04gq2KdiwH_Dxjh2Y-av-",
"1UeZOe4EkXqOSrZJ2Tl9PeYWg0B8Cpjwn",
"1Tw1AW2NWC0MxeVQk6uvnh7qeHjiy6Cby",
"1AA85Rfe_Rg5hozPMOcHBJLxpwSgO4xUA",
"1iZjqsS3LuK8SLQnI9kw0TyfPPEXBtWxP"
]
}
}
}Et si je regarde un peu plus loin dans la timeline des appels REST, je retrouve plusieurs appels au endpoint https://mpcfill.com/2/cards/.
En l'occurrence, ces appels sont chargés avec un body sous la forme d'une structure de données formatée en JSON, du type :
{
"cardIdentifiers": [
"1_C-VKpz5AoTbkQugCTq0Sn0OBrE0pcZP",
"189EZfCNYnvsYOwHGq_ATGeOUqRhfF2EM",
"1ls3THAyKEUmzPgydus9wwPuCMInzvIHk",
"1JfCCpOEKt5Li2BqyvPEdlYHntsEH7Bbl",
"1FlwxP-JiqT16sx9y6AshMnWoj-BhEF3J",
"1NkSHR_J86vwRvfbtRzf5x-YZxpl_6vZz",
"1ZcSmYd2qHu9PnpMQSNVI8QKYjLp09lWc",
"1zuaW8mFzqZQ04gq2KdiwH_Dxjh2Y-av-",
"1UeZOe4EkXqOSrZJ2Tl9PeYWg0B8Cpjwn",
"1Tw1AW2NWC0MxeVQk6uvnh7qeHjiy6Cby",
"1AA85Rfe_Rg5hozPMOcHBJLxpwSgO4xUA",
"1iZjqsS3LuK8SLQnI9kw0TyfPPEXBtWxP"
]
}Tiens c'est marrant... On retrouve toutes les valeurs qui semblent être des identifiants et retournées par le premier appel REST.
Le retour de cet appel REST ressemble à cette structure de données JSON (je ne vous ai gardé qu'un élément) :
{
results: {
"1_C-VKpz5AoTbkQugCTq0Sn0OBrE0pcZP": {
"cardType": "CARD",
"dateCreated": "10th September, 2023",
"dateModified": "2nd October, 2023",
"downloadLink": "https://drive.google.com/uc?id=1_C-VKpz5AoTbkQugCTq0Sn0OBrE0pcZP&export=download",
"dpi": 1200,
"extension": "jpg",
"identifier": "1_C-VKpz5AoTbkQugCTq0Sn0OBrE0pcZP",
"language": "EN",
"mediumThumbnailUrl": "https://drive.google.com/thumbnail?sz=w800-h800&id=1_C-VKpz5AoTbkQugCTq0Sn0OBrE0pcZP",
"name": "Aetherize (Borderless Ryan Barger)",
"priority": 1,
"searchq": "aetherize",
"size": 2408395,
"smallThumbnailUrl": "https://drive.google.com/thumbnail?sz=w400-h400&id=1_C-VKpz5AoTbkQugCTq0Sn0OBrE0pcZP",
"source": "JohnPrime",
"sourceId": 2,
"sourceName": "JohnPrime",
"sourceVerbose": "JohnPrime",
"tags": [],
"sourceExternalLink": "https://drive.google.com/open?id=1dEnuJ48PRAt6U576iy1GqR4VeqMPNFdA",
"sourceType": "Google Drive"
}
// (...)
}
}Dans cette structure, je pouvais ainsi retrouver toutes les informations relatives à un design d'une carte proposée par MPC Fill.
Ainsi j'avais compris que la liste de départ était simplifiée (tout en minuscule), envoyée au premier endpoint pour avoir la liste des designs correspondants trouvés sur MPC Fill. Un appel en masse au second endpoint avec l'ensemble des identifiants des designs trouvés permettait d'avoir des informations plus détaillées sur ces derniers, et notamment comment ils devaient être téléchargés.
Il n'en fallait pas plus pour aider Google AI Studio !
J'ai donc prompté dans ce dernier ma compréhension du fonctionnement des appels REST effectués par MPC Fill. J'ai également reproduit l'expérience d'analyse avec un nombre limité de cartes (2) et pour chacun des appels, j'ai :
- Capturé l'appel au endpoint avec le menu Copy > Copy as cURL,
- Capturé la réponse obtenue avec le menu Copy > Copy response.
J'ai ensuite confié toutes ces informations à Google AI Studio, en lui précisant l'objet final du projet : créer un moyen de générer facilement des planches d'impression de proxies, à partir d'une liste de cartes.
Il a commencé à travailler et une première version est alors apparue devant moi.
J'essaie naturellement d'envoyer une liste de cartes et j'ai été confronté à un premier problème classique, et bien connu des développeurs : des problèmes de CORS.
Résolution simplifiée des problèmes de CORS
Dans un navigateur web, on retrouve une politique de sécurité fondamentale : la Same-Origin Policy ou SOP.
Ce mécanisme impose qu'un script (le code Javascript en cours de vibe coding), ne puisse accéder aux données d'un autre site que si les deux partagent exactement la même "origine" (même protocole, même domaine et même port).
C'est une protection essentielle pour empêcher qu'un site malveillant de lire les données d'un autre onglet ouvert.
Pour mon projet, c'est un obstacle : cette politique m'empêche de récupérer les données issues des endpoints de MPC Fill, car le code Javascript de mon application n'est pas hébergé sur le site https://mpcfill.com !
Du coup, dans le navigateur, je vois des erreurs CORS (Cross-Origin Resource Sharing).
Le CORS est un système d'exception à la règle SOP : il permet à un serveur tiers de déclarer explicitement, via des en-têtes HTTP (comme Access-Control-Allow-Origin), qu'il accepte les requêtes venant de l'extérieur.
C'est là où Google AI Studio m'a appris l'existence du service corsproxy.io !
Ce service, gratuit jusqu'à une certaine limite, opère comme un intermédiaire (proxy) dont la seule fonctionnalité supplémentaire est d'envoyer un en-tête HTTP Access-Control-Allow-Origin: * (toutes les sources sont autorisées), me permettant presque par miracle, à m'absoudre de ce problème !
Et dans le cas présent, juste une mention d'un problème de CORS a suffi à Google AI Studio pour implémenter corsproxy.io un peu partout.
Je l'ai tout de même orienté pour qu'il ne l'utilise pas pour les ressources qui ne le nécessitent pas, afin d'éviter le rate-limiting implémenté sur corsproxy.io.
Diviser pour mieux régner
Un des principes à respecter pour arriver à ses fins en vibe coding, c'est de traiter un problème à la fois.
En l'occurrence, le premier point, avant de s'occuper de la génération, est d'avoir une application dont l'interface utilisateur est fonctionnelle.
Et c'est ce qui est assez bluffant avec Google AI Studio, avec un seul prompt, certes bien détaillé et quelques allers-retours pour corriger notamment les problèmes de CORS, j'obtiens cette interface :

Cet essai validé, j'ai commencé à pousser un peu plus loin, notamment en passant au logiciel une liste complète et réaliste d'un deck et je tombe sur une erreur un peu plus technique :

C'est à ce moment-là que notre niveau de compréhension peut faire la différence avec un utilisateur non technique de Google AI Studio.
En effet, ici l'erreur est parlante : on a une HTTP 400 (Bad Request) qui semble indiquer que l'on demande trop de cartes (3181 alors que le maximum est à 1000).
Le premier réflexe que j'ai est de lancer à nouveau la requête mais avec la fenêtre des developer tools ouverte.

Et pour des techniciens du code pour nous c'est tout de suite évident !
En effet, l'appel au endpoint https://mpcfill.com/2/cards/ ne semble prendre que 1000 références de designs de cartes au maximum.
Un petit résumé de la situation à Google AI Studio et il corrige de lui-même le problème : il récupère les images par des lots de 1000 et tout redevient fonctionnel !
La génération des planches au format SVG
C'est la partie qui me semblait impossible à implémenter en vibe coding.
Après une première description plutôt bien détaillée des opérations que je voulais automatiser dans le programme final, et que je faisais manuellement dans Inkscape, Google AI Studio arrive à me produire une version qui me sort bien un SVG alimenté avec les visuels sélectionnés : impressionnant !
Si vous ne vous souvenez plus de la problématique, je vous invite à remonter dans l'article pour revoir ce que j'attends du logiciel : un placement précis de chaque image sur les guides disponibles dans le template SVG et une opération de crop avec le masque concerné.
Il a bien réussi à retrouver les guides en question, à importer l'image dans le fichier SVG et à le positionner correctement suivant les guides et enfin réaliser l'opération de crop pour la bonne gestion des fonds perdus.
Par contre, pour une raison que j'ignore, le rendu final était toujours buggé ! J'avais une ligne d'images qui débordaient au-delà des limites attendues 🤨...
Quelles que soient mes demandes de corrections, et malgré l'imagination débordante de Gemini pour trouver l'origine du problème j'avais toujours un décalage dans le positionnement des images.
C'est alors que m'est venu un éclair de génie, que l'IA ne pouvait manifestement pas avoir :
- J'ai positionné les index d'images séquentiellement de gauche à droite et de haut en bas (naturel pour nous humains),
- Je me suis rappelé que dans les logiciels de graphismes, il est généralement admis que l'origine est en bas à gauche et que donc, l'ordre est inversé par rapport à l'ordre naturel et humain !
J'informe cette révélation à Google AI Studio qui s'empresse de me faire la correction correspondante... et ça a fonctionné !
Ce cas est bien la démonstration que l'IA a encore (pour l'instant) besoin d'un humain compétent en développement pour sortir d'une boucle de résolution inopérante !
L'excitation de la livraison en continu
Maintenant que j'ai enfin obtenu mon MVP, je vais enfin pouvoir travailler sur l'ajout de fonctionnalités.
C'est à ce moment-là qu'on se rend compte de la vraie puissance du vibe coding !
En effet, il devient très simple dans Google AI Studio de créer de nouvelles choses avec un simple prompt et de revenir en arrière en cas d'impasse.
Dans la plupart des cas, de l'expression du besoin à la mise en œuvre, il m'a fallu moins de 10 minutes. C'est vraiment une sensation grisante.
En l'occurrence, depuis le MVP, voici la liste des fonctionnalités que j'ai implémentées :
- Mise en place d'un aperçu de chaque page à générer sous la forme d'une grille de 3x3 visuels avec un système de navigation,
- L'utilisation d'une fenêtre modale pour la sélection d'un visuel pour une carte en cliquant sur une icône,
- Le fait de pouvoir appliquer le même visuel sur toutes les copies d'une même carte et uniquement sur la carte en cours,
- Une prévisualisation en haute résolution de chaque carte en cliquant dessus,
- La génération du document de sortie au format PDF en plus du SVG avec du downsampling de la résolution,
- L'utilisation du template par défaut ou de proposer son propre template,
- Le téléchargement en parallèle et à la demande des visuels,
- Le fait de gérer automatiquement l'ajout de la face verso des cartes recto-verso (car l'outil est destiné à une impression simple face),
- Le support de https://scryfall.com comme source de visuels pour avoir les visuels officiels,
- La possibilité de masquer ou non la mention "Proxy - not for sale" par visuel (notamment pour les cartes disposant déjà de cette mention),
- La possibilité de doubler la résolution des images téléchargées via IA...
Et tout ce paquet de fonctionnalités a été implémenté en moins de deux heures... soit trois fois plus rapidement que le temps d'écriture de cet article !

Vous pouvez consulter l'application à cette adresse : https://magic-proxy-sheet-generator-1073983705437.us-west1.run.app.
Que retenir de cette expérience ?
S'il n'y avait qu'une seule chose à retenir, c'est que le vibe coding, ça marche ! Et ça marche plutôt bien !
La seule condition pour obtenir ce que vous voulez, c'est tout de même d'avoir des compétences en développement (et en système informatique en général).
Alors qu'initialement je pensais que ma demande n'allait pas être réalisable, Google AI Studio a vraiment rendu possible la création d'un programme que j'utilise quotidiennement, avec des fonctionnalités que je n'avais pas imaginé au départ !
D'autant plus que lorsque j'ai expérimenté Google AI Studio, j'utilisais Gemini 2.5 Pro... Alors imaginez ce qu'il est possible de faire aujourd'hui avec Gemini 3.0 Pro 🤯 avec en relais Google Antigravity 🤯🤯🤯
Donc en résumé, avec le vibe coding, la seule limite, c'est vraiment votre imagination.

