FRONT-END
Nuxt@4
TailwindCSS@4
Typescript
Ogni giorno a mezzanotte, il database SQLite del mio portfolio viene aggiornato automaticamente tramite un servizio Docker dedicato sul mio VPS.
Questo servizio esegue un cron job Node.js che compone e aggiorna i dati da diverse fonti, incluse le API di Vimeo, GitHub, GitLab, scraping con Puppeteer e fonti statiche ospitate su https://storage.rottigni.tech/.
Gli aggiornamenti vengono applicati al database SQLite tramite@prisma/cliente sono riflessi sia nel filesystem del VPS che nel container Nuxt3, sincronizzati tramite Docker volumes.
Il container seeder genera log durante il processo, inclusi logs.log, errors.log e debug.log, che vengono inviati al mio storage privato su https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/logs/ad ogni esecuzione.
Il container crea anche un backup del database SQLite3 prima di ogni operazione di seed, salvato su https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/backup/,, per garantire la sicurezza dei dati.
Una funzionalità chiave del sistema è l’utilizzo dello storage privato come cache.
Quando il seeder richiede dati da un provider originale, carica un file JSON con timestamp UTC nel nome su storage
(https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/history/)Quando la cache è attiva, il seeder legge l’ultimo file dallo storage invece di interrogare il provider originale.
Tutto è orchestrato tramite un file seed.config.ts nella root della directory di seeding.
Questo file definisce quali entità e relazioni devono essere generate, cosa deve essere cachato e dove i dati devono essere caricati.
Nel complesso, questo sistema automatizza gli aggiornamenti del database del portfolio garantendo sicurezza e riducendo le richieste ai provider grazie alla cache.