Разработка мобильного приложения для библиотеки
Библиотечное приложение выглядит несложно снаружи: каталог книг, поиск, абонемент. Сложность внутри — библиотеки используют стандартизированные форматы данных (MARC21, OPDS, Z39.50), у многих нет современного API, а интеграция с библиотечными системами типа ИРБИС-64, Koha или Alma требует специфической адаптации.
Источник данных: от OPDS до кастомного API
Если библиотека использует современную систему — скорее всего есть OPDS-фид (Open Publication Distribution System). Это Atom/XML API для каталогов. Парсим через XMLParsing (Swift) или kotlinx.serialization с кастомным XML-десериализатором (Android).
Если OPDS нет — либо договариваемся о REST API с IT-отделом, либо строим собственный backend-прокси поверх существующей системы. Z39.50 через интернет без посредника с мобильного — практически нереально, нужен серверный адаптер.
Для небольших библиотек без внешней системы — собственный backend (Laravel/Node) с ручным вводом каталога через CMS.
Локальная база данных
Каталог книг кэшируем локально: Room (Android) / Core Data (iOS). Ключевые сущности:
@Entity data class Book(
@PrimaryKey val isbn: String,
val title: String,
val author: String,
val year: Int,
val genre: String,
val coverUrl: String?,
val availableCopies: Int,
val totalCopies: Int
)
@Entity data class Reservation(
@PrimaryKey(autoGenerate = true) val id: Long = 0,
val bookIsbn: String,
val userId: String,
val status: String, // ACTIVE, COMPLETED, CANCELLED
val dueDate: Long
)
FTS (Full-Text Search) через Room @Fts4 для поиска по названию и автору без сетевых запросов:
@Fts4(contentEntity = Book::class)
@Entity(tableName = "book_fts")
data class BookFts(val title: String, val author: String)
Поиск работает мгновенно на оффлайне — важно для читального зала с плохим WiFi.
Ключевые функции и реализация
Каталог с фильтрами
LazyColumn (Compose) / UICollectionView с Diffable Data Source. Фильтры: жанр, год, доступность, язык. Фильтрация через Room запросы с динамическими условиями или @Query с nullable-параметрами.
Личный кабинет и абонемент
Авторизация через номер читательского билета + пароль или через QR-код билета. После входа — текущие книги на руках, история, задолженности, резервации. Push-уведомления за 3 дня до срока возврата (через FCM / APNs).
Штрих-код / QR сканирование
Сканирование ISBN для быстрого поиска книги — через MLKit Barcode Scanner (Android) или Vision framework (iOS). Сканирование читательского билета — QR Code через те же библиотеки.
Электронные книги
Если библиотека предоставляет электронные ресурсы — интеграция с ЛитРес Библиотека по партнёрской программе или собственный EPUB/PDF-ридер. EPUB рендеринг через Readium (iOS/Android) — открытый стандарт с поддержкой DRM.
Оффлайн-режим
Список забронированных книг и личный кабинет должны работать без интернета — из локального кэша. Синхронизация при восстановлении соединения через WorkManager (Android) / BGTaskScheduler (iOS).
Что входит в работу
- Анализ существующей библиотечной системы и выбор способа интеграции
- OPDS-парсер или REST API интеграция
- Локальный каталог с FTS-поиском
- Личный кабинет: абонемент, история, резервации
- Push-уведомления о сроках возврата
- ISBN/QR-сканер
- Оффлайн-режим с синхронизацией
Сроки
MVP с каталогом, поиском и личным кабинетом: 4–6 недель. Полноценное приложение с оффлайн-режимом, push, сканером и интеграцией с существующей библиотечной системой: 8–12 недель. Стоимость зависит от наличия и качества API библиотечной системы.







