Javascript is required

portfolio.rottigni.tech

FRONT-END

  • Nuxt3

  • TailwindCSS 5

  • Typescript

BACK-END

  • SQLite3

  • Prisma

  • Nitro

8 LANGUES

6 TEINTE

  • SSR (Server Side Rendering)
  • Listes TSX, toasts, rendu modal
  • Écosystème SEO-friendly
  • Entièrement testé unitairement par Vitest
  • Nitro API Resolvers
  • Compatibilité complète du navigateur
  • Source SQLite3 DB
  • Linting Eslint + Stylelint + Prettier
PRINCIPALES DÉPENDANCES
Le système de semis

Chaque jour à minuit, la base de données SQLite de mon portefeuille 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, notamment Vimeo, GitHub, l'API GitLab, le grattage Web des marionnettistes et des sources statiques hébergées surhttps://storage.rottigni.tech/.

Les mises à jour sont appliquées à la base de données SQLite à l'aide de@prisma/clientet se reflètent à la fois dans le système de fichiers VPS et dans le conteneur Nuxt3, qui restent mis à jour via les volumes Docker.

Le conteneur Seeder génère des journaux pendant le processus d'amorçage, y compris logs.log, error.log et debug.log, qui sont envoyés à mon référentiel privé àhttps://s3.rottigni.tech/portfolio.rottigni.tech/seeding/logs/à chaque course.

Le conteneur créera également une sauvegarde de la base de données SQLite3 avant chaque opération de démarrage, en la stockant surhttps://s3.rottigni.tech/portfolio.rottigni.tech/seeding/backup/,, pour assurer la sécurité des données.

Une caractéristique notable du seeder est sa capacité à utiliser ma boutique privée comme fournisseur de données en cache.

Lorsque le seeder demande des données à un fournisseur source, il télécharge un nouveau fichier de réponse d'API JSON dans mon archive contenant dans son nom de fichier l'horodatage UTC de l'opération

(https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/history/)

Lorsque la mise en cache est activée, le générateur lit le dernier fichier de l'archive au lieu de demander les données au fournisseur d'origine.

Tout cela est orchestré via un fichier seed.config.ts situé dans le répertoire racine d'ensemencement.

Ce fichier spécifie quelles entités et relations doivent être renseignées, ce qui doit être mis en cache et les chemins d'accès où les données doivent être chargées.

Dans l'ensemble, ce système fournit des mises à jour automatiques de la base de données SQLite de mon portefeuille tout en garantissant la sécurité des données et en minimisant les demandes aux fournisseurs d'origine grâce à l'utilisation de données en cache.

Coded withby Lorenzo Rottigni