portfolio.rottigni.tech

FRONT-END

  • Nuxt@4

  • TailwindCSS@4

  • Typescript

BACK-END

  • SQLite3

  • Prisma

  • Nitro

Система сидирования

Каждую ночь база данных SQLite моего портфолио автоматически обновляется через выделенный Docker-сервис на VPS.

Этот сервис запускает cron-задачу Node.js, которая формирует и обновляет данные из различных источников, включая Vimeo, GitHub, GitLab API, Puppeteer-скрапинг и статические источники, размещённые на https://storage.rottigni.tech/.

Обновления применяются к SQLite базе через@prisma/clientи отражаются как в файловой системе VPS, так и в контейнере Nuxt3, синхронизированном через Docker volumes.

Контейнер сидирования генерирует логи во время процесса (logs.log, errors.log, debug.log), которые отправляются в моё приватное хранилище https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/logs/на каждом запуске.

Также контейнер создаёт резервную копию SQLite3 перед каждой операцией сидирования, хранящуюся в https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/backup/,, чтобы обеспечить безопасность данных.

Одна из ключевых особенностей сидера — возможность использовать приватное хранилище как кэш-провайдер.

При запросе данных у оригинального источника он загружает новый JSON-ответ в хранилище с UTC-временной меткой в имени файла

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

Если кэш включён, сидер читает последний файл из хранилища вместо обращения к исходному источнику.

Всё это управляется через seed.config.ts в корне директории сидирования.

Этот файл определяет, какие сущности и связи нужно сидировать, что кэшировать и куда загружать данные.

В целом система автоматически обновляет SQLite базу портфолио, обеспечивая безопасность данных и минимизируя обращения к внешним источникам через кэш.

Сообщить об ошибке

Что-то странное произошло?

Поле "E-mail" обязательно.
Поле "Проблема" обязательно.