BOOK-LIBRARY — full-stack веб-приложение для домашней или небольшой частной электронной библиотеки. Проект помогает разложить книги по категориям, показать их в публичном каталоге и отдавать скачивание через короткоживущие ссылки.

В проекте есть две части. Публичная часть показывает категории и книги: читатель открывает раздел, видит карточки с обложкой, названием, автором и описанием, а затем запрашивает ссылку на скачивание. Админская часть нужна для наполнения библиотеки: вход по логину и паролю, создание категорий, загрузка одной книги, редактирование записей, удаление книг и пакетный импорт ZIP-архива.

Отдельный интересный слой — автоимпорт. Если при загрузке не хватает названия, автора, описания, категории или обложки, backend пытается извлечь метаданные из файла, передать фрагмент текста в LLM и найти обложку через внешние источники. Это не заменяет ручную проверку, но снимает самую скучную часть работы при добавлении большой коллекции.

Что уже закрывает проект

  • публичный каталог категорий и книг;
  • карточки книг с обложкой, автором, описанием и кнопкой скачивания;
  • временные download-ссылки вместо прямой раздачи постоянного URL файла;
  • админ-панель с session-based авторизацией;
  • добавление, редактирование и удаление книг;
  • создание и удаление категорий;
  • пакетная загрузка ZIP-архивов с потоковым прогрессом обработки;
  • автоизвлечение метаданных из FB2, EPUB и PDF;
  • поиск обложек через Open Library, Google Books и DuckDuckGo;
  • legacy-версия на EJS для простого HTML-интерфейса.

Как устроен основной сценарий

Администратор создаёт категории, загружает книгу или ZIP-архив, при необходимости дополняет поля вручную. Backend сохраняет запись в SQLite, кладёт файл книги в файловое хранилище, обложку приводит к WebP через Sharp и отдаёт её как статику. Читатель видит уже готовый каталог и скачивает книгу через временный токен.

Такой проект полезен не как абстрактная «платформа для контента», а как понятный инструмент для личной коллекции: когда книги уже лежат в разных форматах, но хочется быстро привести их к каталогу с категориями, обложками и описаниями.

Подробнее

  • Обзор и сценарии — как библиотекой пользуются читатель и администратор.
  • Архитектура — SvelteKit frontend, Express backend, SQLite, uploads и основные API.
  • Импорт, метаданные и каталог — как устроены одиночная загрузка, ZIP-импорт, LLM-обогащение и поиск обложек.
  • Roadmap — что стоит усилить дальше, включая интеграцию с этим Quartz-сайтом.