Les fiches des librairies sont confuses. Le back-end Python de Hiki les transforme en un catalogue que les lecteurs peuvent filtrer et parcourir.
Chaque jour, Google Cloud Scheduler lance les scrapers de Hiki. Ils sont construits avec aiohttp, avec limitation de débit et backoff exponentiel, et lisent les rayons de plusieurs librairies : noms, état du stock et images. La détection des changements signale les nouveautés et les titres de retour en stock, pour que les lecteurs ne ratent aucune mise à jour.
Un nom de produit brut venant d’une librairie est souvent confus et incohérent. Le pipeline d’enrichissement de Hiki orchestre plusieurs API pour retrouver le manga qui se cache derrière. AniList est la source principale pour les notes, les genres, les tags, le synopsis et la couverture. Shikimori traduit les titres des noms de produits écrits en cyrillique, et Jikan et Kitsu servent de secours pour les cas particuliers. Le pipeline génère des variantes de titres, gère les caractères cyrilliques comme latins et rattache même les noms les plus déformés à leur fiche manga de référence. Les librairies n’indiquent aucun genre : c’est donc cette étape qui rend Hiki filtrable. Les 21 genres et les plus de 100 tags selon lesquels les lecteurs filtrent viennent d’AniList.
L’API est en FastAPI, avec MongoDB en asynchrone via le pilote Motor. MongoDB stocke le catalogue sous forme de documents flexibles avec des index composés. Le front-end Next.js lit cette API et affiche le catalogue dans toutes les langues prises en charge.
Le back-end tourne sur Google Cloud Run, à côté du front-end, et Cloud Build le déploie à chaque push sur main. Cloud Armor le protège en amont, avec des restrictions géographiques et une liste blanche pour les robots d’indexation.