tatmapper-app

Local multi-project library — architecture and backlog

Status and boundary

NOT SHIPPING IN PR #118. The current beta intentionally owns one active local project. This document defines a later local-first library without adding cloud, accounts, analytics, client-management claims, or network access. Implementation is tracked by issue #119.

The feature should make shop testing safer by preventing a new placement from silently replacing the previous one. It is not a client CRM and must not invite artists to store unnecessary personal or medical information.

Product goals

Proposed data layout

Application Support/
  settings.json
  library/
    index.json
  projects/
    <immutable-project-id>/
      project.json
      media/
        placement-original.*
        placement-working.*
        design-original.*
        design-working.*
        thumbnail.webp
      exports/
        temporary/

project.json remains authoritative for project state. library/index.json is a rebuildable summary index, written atomically, containing no geometry:

All indexed media paths are project-relative. TatMapper must refuse deletion of any path outside its validated application-support project root.

Migration

  1. Detect the existing single project on first library-enabled launch.
  2. Validate its JSON and all TatMapper-owned media before moving.
  3. Create a new immutable directory using the existing project ID.
  4. Atomically persist the migrated project and index.
  5. Delete the legacy record/files only after both writes verify.
  6. If migration fails, leave the original project untouched and offer retry.
  7. Rebuild a missing/corrupt index by scanning valid project directories; never infer a project from arbitrary external media.

Library experience

Concurrency and integrity

Privacy and export

No client name, contact field, consent record, appointment record, body/health category, cloud backup, or automatic photo-library export is introduced. An artist may use a neutral project name. Sharing remains an explicit OS share action. Device backup behavior must be documented per platform before shipping.

Suggested branch and PR

Acceptance criteria

Test plan