Skip to content

Architecture

Archivis is built as a Rust + Svelte 5 application shipped as a single binary:

  • Backend: Rust with Axum web framework and Tokio async runtime
  • Frontend: Svelte 5 with SvelteKit, Tailwind CSS, and shadcn-svelte components
  • Database: SQLite with WAL mode for concurrent access — no external database needed
  • Background jobs: Tokio-based async task system

Design Principles

  1. Separated concerns — API server, background workers, and frontend have well-defined interfaces
  2. Database lives separately from book files — no .db files stored alongside your ebooks
  3. All heavy work is async — imports, metadata, OCR, and conversions run as background tasks
  4. Pluggable architecture — metadata sources, storage backends, and auth adapters are extensible
  5. API-first — the web UI is just another API consumer; everything it does, you can do via the API

Workspace Layout

The backend is a Cargo workspace with 9 crates:

CratePurpose
archivis-serverBinary entrypoint, config, startup
archivis-apiAxum HTTP handlers and REST endpoints
archivis-coreDomain models and shared types
archivis-dbSQLite persistence via sqlx
archivis-formatsEbook format detection and parsing
archivis-metadataMetadata source plugins
archivis-tasksBackground job system
archivis-storageFile storage abstraction
archivis-authAuthentication and authorization