Javascript is required

portfolio.rottigni.tech

FRONT-END

  • Nuxt3

  • TailwindCSS 5

  • Typescript

BACK-END

  • SQLite3

  • Prisma

  • Nitro

8 IDIOMAS

6 MATIZ

FEATURES

  • SSR (Server Side Rendering)
  • Listas TSX, brindis, renderizado de modales
  • Ecosistema SEO-friendly
  • Totalmente probado por Vitest
  • Nitro API Resolvers
  • Compatibilidad total con el navegador
  • Fuente de base de datos SQLite3
  • Linting Eslint + Stylelint + Prettier
DEPENDENCIAS PRINCIPALES
El sistema de siembra

Todos los días a la medianoche, la base de datos SQLite de mi cartera se actualiza automáticamente a través de un servicio Docker dedicado en mi VPS.

Este servicio ejecuta un trabajo cron de Node.js que compone y actualiza datos de varias fuentes, incluidas Vimeo, GitHub, API de GitLab, web scraping de titiriteros y fuentes estáticas alojadas enhttps://storage.rottigni.tech/.

Las actualizaciones se aplican a la base de datos SQLite usando@prisma/clienty se reflejan tanto en el sistema de archivos VPS como en el contenedor Nuxt3, que permanecen actualizados a través de los volúmenes de Docker.

El contenedor seeder genera registros durante el proceso de inicialización, incluidos logs.log, error.log y debug.log, que se envían a mi repositorio privado enhttps://s3.rottigni.tech/portfolio.rottigni.tech/seeding/logs/en cada corrida.

El contenedor también creará una copia de seguridad de la base de datos SQLite3 antes de cada operación inicial, almacenándola enhttps://s3.rottigni.tech/portfolio.rottigni.tech/seeding/backup/,, para garantizar la seguridad de los datos.

Una característica notable de Seeder es su capacidad para usar mi tienda privada como proveedor de datos en caché.

Cuando el sembrador solicita datos de un proveedor de origen, carga un nuevo archivo de respuesta de API JSON a mi archivo que contiene en su nombre de archivo la marca de tiempo UTC de la operación

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

Cuando el almacenamiento en caché está habilitado, el sembrador lee el archivo más reciente del archivo en lugar de solicitar los datos del proveedor original.

Todo esto se orquesta a través de un archivo seed.config.ts ubicado en el directorio raíz de inicialización.

Este archivo especifica qué entidades y relaciones se deben completar, qué se debe almacenar en caché y las rutas a donde se deben cargar los datos.

En general, este sistema proporciona actualizaciones automáticas a la base de datos SQLite de mi cartera al tiempo que garantiza la seguridad de los datos y minimiza las solicitudes a los proveedores originales mediante el uso de datos en caché.

Coded withby Lorenzo Rottigni