Розробка мобільного додатку для бібліотеки
Бібліотечний додаток виглядає несложно: каталог книг, пошук, абонемент. Складність внутрі — бібліотеки використовують стандартизовані формати даних (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 бібліотечної системи.







