FRONT-END
Nuxt@4
TailwindCSS@4
Typescript
Chaque nuit à minuit, la base de données SQLite de mon portfolio est automatiquement mise à jour via un service Docker dédié sur mon VPS.
Ce service exécute une tâche cron Node.js qui compose et met à jour des données provenant de diverses sources, dont les API Vimeo, GitHub, GitLab, du scraping Puppeteer et des sources statiques hébergées sur https://storage.rottigni.tech/.
Les mises à jour sont appliquées à la base SQLite via@prisma/clientet sont répercutées à la fois sur le système de fichiers du VPS et sur le conteneur Nuxt3, synchronisés via des volumes Docker.
Le conteneur de seeding génère des logs pendant le processus, notamment logs.log, errors.log et debug.log, envoyés vers mon stockage privé sur https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/logs/à chaque exécution.
Le conteneur crée également une sauvegarde de la base SQLite3 avant chaque opération de seeding, stockée sur https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/backup/,, afin de garantir la sécurité des données.
Une fonctionnalité notable du seeder est sa capacité à utiliser mon stockage privé comme fournisseur de cache.
Lorsqu’il récupère des données d’un fournisseur original, il téléverse un nouveau fichier JSON de réponse dans mon stockage, contenant dans son nom le timestamp UTC de la requête
(https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/history/)Lorsque le cache est activé, le seeder lit le dernier fichier du stockage au lieu de requêter le fournisseur original.
Tout cela est orchestré via un fichier seed.config.ts situé à la racine du dossier de seeding.
Ce fichier définit les entités et relations à alimenter, ce qui doit être mis en cache et les chemins de destination des données.
Globalement, ce système permet de mettre à jour automatiquement la base SQLite de mon portfolio tout en garantissant la sécurité des données et en réduisant les requêtes aux fournisseurs externes grâce au cache.