U#3 Ex Libris – home library management

Ex Libris is a multi‑platform application for managing a personal book collection. It provides dedicated screens for books, authors, and categories, allowing users to add, edit, and remove entries while keeping a normalized data model (books reference authors and categories rather than duplicating information).

The app supports reading statuses (to read / reading / finished), initial sample data for quick evaluation, and polished list views using cards, icons, and status chips. Users can choose existing authors and categories from pickers when creating or editing a book, making data entry faster and more consistent.

Navigation is organized through a shell with tabs for Books, Authors, and Categories, and the app includes a splash screen and basic localization (English and German). A Ktor-based backend exposes a simple JSON API to back up the entire library (books, authors, categories) and restore it later, demonstrating fullstack integration between the Flutter client and a Kotlin server.

Tech stack:

  • Frontend

    • Flutter (3.x) – multi-platform UI (macOS, Android, iOS, Web-capable)
    • Dart (3.x)
    • Riverpod – state management and dependency injection
    • go_router – navigation (planned/ready for route-based navigation)
    • drift – local SQLite ORM for structured, normalized storage
    • json_serializable / freezed – code generation for models and state
  • Backend

    • Ktor (Kotlin) – lightweight HTTP server
    • kotlinx.serialization – JSON serialization of backup snapshots
    • Simple in-memory storage for library snapshots, designed to be extended to a real DB
  • Architecture & Tooling

    • Clean Architecture, MVVM: data (Drift/repositories/mappers), domain (entities, snapshots), presentation (screens, viewmodels)
    • GitHub Actions CI (Flutter analyze + test)
    • macOS/iOS/Android platform integration (entitlements, manifests, bundle IDs)