FRONT-END
Nuxt3
TailwindCSS 5
Typescript
Portfolio |Αα
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 varie fonti, tra cui Vimeo, GitHub, API GitLab, web scraping di burattinai e fonti statiche ospitate suhttps://storage.rottigni.tech/.
Gli aggiornamenti vengono applicati al database SQLite utilizzando@prisma/cliente si riflettono sia sul file system della VPS che sul contenitore Nuxt3, che rimangono aggiornati attraverso i volumi Docker.
Il contenitore seeder genera log durante il processo di seeding, inclusi logs.log, error.log e debug.log, che vengono inviati al mio archivio privato all'indirizzohttps://s3.rottigni.tech/portfolio.rottigni.tech/seeding/logs/ad ogni esecuzione.
Il contenitore si occuperà anche di creare anche un backup del database SQLite3 prima di ogni operazione di seed, archiviandolo suhttps://s3.rottigni.tech/portfolio.rottigni.tech/seeding/backup/,, per garantire la sicurezza dei dati.
Una caratteristica notevole del seeder è la sua capacità di utilizzare il mio archivio privato come fornitore di dati memorizzati nella cache.
Quando il seeder richiede dati da un provider sorgente, carica un nuovo file di risposta API JSON nel mio archivio contenente nel suo filename il timestamp UTC dell'operazione
(https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/history/)Quando la memorizzazione nella cache è abilitata, il seeder legge l'ultimo file dall'archivio invece di richiedere i dati al provider originale.
Tutto questo è orchestrato tramite un file seed.config.ts che si trova nella root directory seeding.
Questo file specifica quali entità e relazioni dovrebbero essere popolate, cosa dovrebbe essere memorizzato nella cache e i percorsi di dove i dati dovrebbero essere caricati.
Nel complesso, questo sistema fornisce aggiornamenti automatici al database SQLite del mio portafoglio garantendo al contempo la sicurezza dei dati e riducendo al minimo le richieste ai fornitori originali attraverso l'uso di dati memorizzati nella cache.