10 points par GN⁺ 2025-12-30 | 2 commentaires | Partager sur WhatsApp
  • Exemple de projet personnel utilisant Claude Code pour classer et visualiser automatiquement environ 500 livres
  • Un problème jusque-là insoluble, car les scanners ISBN ou Goodreads ne reconnaissaient pas les éditions roumaines, résolu grâce à l’API Vision d’OpenAI et à des scripts générés avec Claude
  • Après une extraction des métadonnées avec une précision de 90 %, le reste a été corrigé manuellement, puis les couvertures ont été récupérées automatiquement via Open Library et SerpAPI
  • Mise en place d’une interaction proche d’une vraie bibliothèque grâce à des animations basées sur le défilement avec Framer Motion et à une épaisseur des livres calculée à partir du nombre de pages
  • Le projet illustre un mode de collaboration où l’IA exécute, tandis que l’utilisateur garde la main sur le jugement esthétique et les choix, en soulignant que « le coût d’exécution baisse, mais le goût reste une affaire humaine »

Découvrir le résultat final : Bookshelf - https://balajmarius.com/bookshelf

Vue d’ensemble du projet

  • Avec environ 500 livres possédés mais sans système de suivi, l’auteur a construit un système de classement et de visualisation automatiques à l’aide d’outils IA
  • Au lieu d’un simple tableur, il a automatisé les étapes d’exécution via Claude Code, ce qui lui a permis d’achever un projet personnel repoussé depuis longtemps
  • L’enjeu central du projet n’était pas tant la perfection technique que la suppression des goulots d’étranglement de l’exécution

Identification du problème

  • Les applications de scan ISBN et Goodreads ne reconnaissaient pas les éditions roumaines ni certaines publications rares, rendant les données incomplètes
  • Des données incomplètes ajoutaient davantage de confusion et faisaient interrompre le projet à répétition
  • Ce qu’il fallait n’était pas une application parfaite, mais une architecture capable de tolérer l’imperfection

Collecte et traitement des données

  • Les données ont été construites à partir de 470 photos prises des couvertures et des tranches des livres
  • Un script écrit par Claude envoie chaque image à l’API Vision d’OpenAI pour extraire auteur, titre et éditeur, puis enregistre le résultat dans des fichiers JSON
  • Le système a atteint une précision d’environ 90 % ; les erreurs restantes provenaient de problèmes d’éclairage, de détérioration ou de résolution
  • Les 10 % restants ont été corrigés manuellement, puis le même pipeline a été relancé automatiquement à chaque ajout de nouveau livre

Amélioration des images de couverture

  • Les couvertures ont d’abord été récupérées via l’API Open Library, mais environ la moitié étaient de mauvaise qualité ou incorrectes
  • Claude a ajouté un système de notation de qualité et de signalement des erreurs et, en cas d’échec, a basculé vers une recherche Google Images via SerpAPI
  • Sur environ 460 livres, seuls 10 ont nécessité une correction manuelle, ce qui a permis de conserver une bonne efficacité d’automatisation

Implémentation de l’interface de bibliothèque

  • Au lieu d’une simple grille de couvertures, le projet reproduit un rendu visuel centré sur les tranches de livres, comme une vraie bibliothèque
  • Claude s’est chargé de l’extraction des couleurs (color quantization) et du calcul de la couleur de texte offrant le bon contraste
  • Le projet utilise aussi les données de nombre de pages d’Open Library pour refléter l’épaisseur des livres, avec une légère variation ajoutée pour plus de réalisme
  • Le résultat donne une texture visuelle proche d’une bibliothèque réelle

Animations et interactions

  • Des animations basées sur le défilement ont été ajoutées avec Framer Motion, faisant incliner les tranches lors du scroll
  • Au départ, des saccades apparaissaient à cause des mises à jour d’état dans React, mais elles ont été corrigées avec des motion values et des animations spring
  • Une fois corrigé, le mouvement est devenu fluide, et le faible coût des expérimentations a permis de multiplier les itérations

Suppression des fonctionnalités inutiles

  • Une fonction de défilement infini avait été ajoutée, mais des incohérences de hauteur de conteneur et des erreurs de scroll dégradaient l’expérience utilisateur
  • Même si cela fonctionnait techniquement, la fonctionnalité n’était pas nécessaire et a été supprimée
  • Le projet souligne que supprimer du “code qui fonctionne mais n’est pas utile” reste un rôle humain

Adaptation mobile et vue en pile

  • Comme le défilement horizontal était peu pratique sur mobile, une vue en pile verticale a été ajoutée
  • Claude a analysé le code existant pour réutiliser le timing des animations, l’extraction des couleurs et la gestion de la transparence au scroll
  • Sans explication supplémentaire, il a généré un nouveau composant complet, montrant ainsi les capacités de compréhension et de recomposition du code par l’IA

Rôle humain et conclusion

  • Même si Claude a écrit tout le code, l’utilisateur a pris les décisions suivantes
    • accepter une précision de 90 %
    • corriger manuellement 10 couvertures
    • choisir un design centré sur les tranches
    • supprimer les fonctionnalités inutiles
    • valider la qualité sensible des animations
  • Le résultat final est une bibliothèque web classant et visualisant automatiquement 460 livres
  • Le projet montre un modèle de collaboration où l’IA prend en charge l’exécution et l’humain le goût et le jugement
  • En conclusion, « le coût d’exécution continue de baisser, mais le goût reste une affaire humaine »

2 commentaires

 
ahwjdekf 2025-12-31

Il affirme que seulement 10 éléments ont nécessité une intervention manuelle, mais ce n’est rien d’autre qu’une justification a posteriori. Pour identifier ces 10 éléments, il a fallu procéder à une vérification exhaustive. La queue remue le chien.

 
GN⁺ 2025-12-30
Réactions sur Hacker News
  • Le vibe coding actuel est parfaitement adapté aux petits projets
    Quand un projet grossit, la gestion du contexte devient difficile, et les LLM ont tendance à générer trop de code inutile ou à introduire des bugs subtils
    Dans ce cas, il vaut mieux repasser en mode brainstorming, ne demander au LLM qu’une aide sur la conception, puis écrire soi-même le code ou fournir une ossature que le LLM complétera
    Les LLM sont encore faibles pour modifier légèrement du code existant ou réutiliser une structure déjà en place. Ils essaient le plus souvent d’ajouter de nouvelles abstractions

    • Je suis d’accord aussi. Cela dit, avec Claude Code, ça fonctionne bien même sur de gros projets
      Je conçois moi-même la structure modulaire et je sais clairement où je veux arriver. Si on relit tout le code en détail et qu’on gère bien les prompts et le contexte (par exemple avec du code d’exemple, des guides agent.md, etc.), ça reste tout à fait contrôlable
    • En réalité, c’est aussi un problème classique de l’architecture logicielle chez les développeurs humains
      Quand une base de code grossit, un couplage fort (tight coupling) entre modules finit par nuire aux performances
      La solution repose sur le principe « programmer contre des interfaces, pas contre des implémentations »
      Il suffit de définir clairement les frontières de chaque module, de séparer dans des fichiers distincts les interfaces qui n’exposent que le nécessaire, puis de faire en sorte que Claude ou ses collègues n’utilisent que ces interfaces
      Cela réduit le contexte et permet à Claude de mieux fonctionner
      Quand le projet prend encore de l’ampleur, le nombre d’interfaces peut à son tour devenir important ; à ce moment-là, il faut gérer cela en découpant à plus grande échelle ou en réduisant le périmètre des changements
    • Il existe désormais tout un spectre, qui va du vibe coding au style copilot, en passant par l’assistance à la conception et le codage entièrement manuel
      On en est maintenant à un niveau où l’on peut les combiner même sur des projets assez importants
    • Pour l’instant, c’est surtout adapté aux petits projets, mais j’ai l’impression qu’on va finir par entrer dans une époque où tous les logiciels seront écrits de cette façon
    • Ça me rappelle la citation « 7000rpm » de Ken Miles. Je me demande à partir de quelle taille ce type de limite apparaît
  • La phrase « Il ne me fallait pas une meilleure appli, mais un système capable de tolérer l’imperfection » m’a marqué
    J’aime bien cette façon d’écrire où Claude n’a pas trouvé les idées, il s’est chargé de l’implémentation, tandis que moi, je me suis occupé du goût

    • Mais ce style donne davantage l’impression d’avoir été écrit par une IA que par un humain
      On voit souvent en ce moment, y compris dans les e-mails, des phrases du genre « Nous n’avons pas réinventé la roue. Nous sommes la roue »
    • Moi, au contraire, j’y ai plutôt vu le texte d’un blogueur débutant
      Le fait de ne pas utiliser de mots grandiloquents et de répéter les mêmes structures de phrases m’a paru très humain
      Une IA mélange en général les schémas de phrases de façon plus aléatoire, alors qu’ici on garde plutôt un cadre cohérent
      Ça donne l’impression de quelqu’un dont le sens de l’édition n’est pas encore très affûté mais qui essaie délibérément d’écrire avec style
      Je me demande si d’autres y ont aussi senti une odeur d’IA
    • Je comprends aussi ce point de vue, mais cette fois, curieusement, ça faisait moins IA
      Cela dit, sur LinkedIn, ce style est devenu tellement omniprésent qu’hier j’ai fini par exploser et publier un message à ce sujet
      J’ai l’impression qu’une combinaison subtile de valeurs affichées et d’ambiance générale joue sur notre détection de l’IA
    • La phrase « c’était suffisant » m’est restée en tête
  • Je n’ai encore jamais vu de grand projet mené avec succès en vibe coding
    La plupart du temps, il s’agit de petits programmes qui existent déjà dans les données d’entraînement
    Si c’est vraiment révolutionnaire, j’aimerais qu’on voie apparaître quelque chose comme un nouvel algorithme de compression ou une solution optimale au problème du voyageur de commerce

    • Mais est-ce vraiment nécessaire ? On n’attend pas d’un marteau autre chose que d’enfoncer des clous
      Les outils de codage par IA devraient se concentrer sur ce qu’ils font bien
      Moi, j’utilise souvent ces outils pour créer de petits programmes d’automatisation métier
      Grâce à eux, je peux faire des choses qui m’étaient impossibles auparavant, et ma productivité a été multipliée par dix
    • C’est vrai, mais la plupart des logiciels existent déjà
      Comme l’explique l’article Perfect Software, l’application parfaite pour quelqu’un est celle qui correspond à ses goûts et à ses objectifs
      Grâce aux LLM, il est devenu facile de créer ce type de logiciel parfait et personnalisé
    • J’ai mené deux compétitions Rust/C++ avec un agent LLM
      Compétition 1, Compétition 2
      Mon score a poussé les autres participants à améliorer leurs solutions
    • La majeure partie du code est répétitive et existe déjà dans les données d’entraînement
      Si l’IA peut éliminer ce travail ennuyeux, les humains pourront se concentrer sur des tâches créatives
    • Ce type de critique est un peu déprimant. En ce moment, nous sommes dans une phase d’exploration et d’apprentissage
      Ce genre de vibe coding appliqué à de petits problèmes est un usage du temps bien plus précieux
  • J’ai moi aussi créé il y a quelques jours une appli d’étagère à livres avec Claude à partir de la même idée
    nindalf.com/books
    Depuis, je lis davantage et il est devenu plus pratique de consulter mes passages surlignés et mes notes
    Les suggestions d’UI de Claude étaient bien meilleures que ce que j’aurais conçu moi-même, et le backend était presque au même niveau
    En revanche, il s’obstinait parfois sur des logiques de validation étranges ; quand je corrigeais moi-même, il reconnaissait aussitôt : « Vous avez raison ! » Cela restait assez rare

    • Très sympa. Les surlignages et les notes viennent de Kindle ?
      J’ai aussi développé une appli d’étagère à livres similaire, mais je n’ai toujours pas trouvé de bonne solution pour gérer les notes d’audiobooks
    • Je construis quelque chose de proche moi aussi. Claude prend souvent des décisions absurdes, mais avec un guidage très serré et des worktrees, ça reste rapide
      Ta version est intéressante aussi
    • Tu pourrais publier le code ? J’aimerais moi aussi créer une appli de suivi annuel de lecture
  • J’ai tenté quelque chose de similaire moi aussi, mais dans mon cas c’était plutôt un échec de Claude
    Je voulais rendre cliquables les images d’étagères sur andrewblinn.com
    Mais Claude générait souvent de mauvais liens Goodreads et y ajoutait des identifiants invalides
    La reconnaissance des tranches de livres était aussi imprécise, donc j’ai fini par faire le travail manuellement dans Figma
    L’automatisation proposée par Claude était trop lente et trop coûteuse

  • J’ai aussi l’habitude de faire chaque année une page d’étagère statique en HTML avec les livres lus dans l’année
    Autrefois, j’avais même écrit un billet en essayant de recréer Delicious Library

    • Je me souviens aussi de cette appli. C’était un souvenir joyeux des débuts du Mac
      Ce n’était pas vraiment nécessaire, mais j’aimais beaucoup organiser mes livres
    • J’avais complètement oublié, mais l’esthétique de Delicious Library se prête vraiment bien à ce type d’application
  • Je suis d’accord avec l’idée que « 460 livres, ce n’est pas un problème d’échelle. Savoir quand supprimer du code qui fonctionne, l’IA ne peut pas le faire à votre place »
    J’ai moi aussi créé une appli avec 900 notes et des données sur 550 livres, et j’ai décidé de ne pas ajouter de scroll infini ni de recherche complexe tant que le navigateur tient le coup
    Pour l’instant, la « recherche dans la page » suffit largement

  • J’ai bien aimé l’idée que « 90 % de précision, c’est suffisant »
    Même si les LLM introduisent de nouvelles erreurs, le monde contient déjà beaucoup de systèmes tolérants aux erreurs
    Cette manière de voir pourrait être utile même à ceux qui ont une position anti-IA

    • Je suis d’accord aussi. Les échanges avec un LLM produisent parfois des résultats amusants, mais si 90 % est utile, alors c’est déjà mieux qu’une recherche Google à mes yeux
  • J’ai moi aussi créé en vibe coding une appli de journal de films sur moviesonthe.computer
    Le fait de partir d’une idée claire, celle de « mon propre clone de Letterboxd », a permis d’avancer vite
    Cette capacité à fabriquer des applis sur mesure est extrêmement puissante
    En revanche, les outils actuels restent insuffisants pour apprendre aux non-développeurs une vraie manière de penser

    • Je voulais moi aussi créer une appli pour suivre mes films, mais Letterboxd ne me convenait pas
      Comme tu le dis, quelqu’un qui a déjà un bagage en programmation peut plus facilement formuler les bons prompts pour ce genre de projet
  • Honnêtement, l’utilisabilité du résultat produit par cette personne est catastrophique
    Elle a peut-être ressenti un sentiment d’accomplissement, mais en pratique, cela ressemble davantage à un jouet de divertissement qu’à un vrai gain de productivité
    Malgré tout, il y a des choses à apprendre dans ce type d’essais

    • « moo point », ça me fait penser à la blague sur l’avis d’une vache, donc sans importance
      Mais pour un outil personnel, le plaisir lui-même peut être le but
      Moi aussi, quand j’étais jeune, je codais en BASIC juste pour m’amuser. Ce n’était pas productif, mais ça avait largement sa valeur