Skip to content

Project Architecture

Noah S. Roberts edited this page Dec 4, 2025 · 2 revisions

The Bitterroot Project will eventually comprise four main components/products:

  • The Bitterroot Classification System (BCS): a library classification system whose main function is to categorize research material in a very specific way, using relatively few characters.

    • Management and implementation details: unknown, undecided. Will hopefully (eventually) be maintained by a semi-independent body associated with the Bitterroot Project, though the details on how exactly this will work are not yet fleshed-out. In the meantime, it will be maintained by the Bitterroot Project itself. Will publish the maintained BCS master list on the Global Master List server (see below).
  • A web application, called the Bitterroot Web Library (BWL), intended to be a source of truth for documents and their respective call numbers for a group or organization. A university, for example, may run a BWL instance for their students and staff members to utilize. It will link to the Global Master List server (see below) to maintain an accurate and up-to-date library and BCS call number assignments.

    • Implementation details:
      • Backend: Django
      • Frontend: Svelte
      • Database: PostgreSQL
  • A desktop application, called Bitterroot Desktop, intended to either link to a specific web app instance, or to run independently and utilize the Global Master List server (GML) as its source of truth for document-to-call number assignments.

    • Implementation details:
      • Backend: Rust (via Tauri)
      • Frontend: Svelte (via Tauri)
      • Database: SQLite
  • The Global Master List server (GML), which will serve as the global source of truth of document-to-call number assignments for all BWL instances and unlinked desktop clients. Collaborative editing, uploading, and classification is planned, though, until the project architects establish clear guidelines for both how to determine the best classification for a document, as well as typical policies for crowd-sourced projects, no definite ETA will be available.

    • Implementation details:
      • Server: a special BWL instance maintained by the Bitterroot Project itself
      • Sync protocol: undecided. May be either a CSV dump of the DB, making the receiving end deal with change tracking and diff management, or a REST-based approach, making the GML deal with change tracking and diff management.

Important

These plans reflect the intentions of the project architects, Noah and John, in the very early stages of development. While the core ideas will likely remain, the end product may differ.

This page intends to serve as a glimpse into our minds, to try to understand what on earth we are doing.

Clone this wiki locally