← User Guide

The Gift Journal · User Guide

Portable Journal Export v1 format

An ordinary .zip file that people can open with standard tools. The container is deliberately simple; the README, JSON files, schema and referenced images inside remain documented and versioned.

The v1 container is now just ZIP. A Portable Journal exported by Build 151 uses the standard .zip filename/type, so Finder, Files, Dropbox and ordinary ZIP tools can open it directly. The semantic format is still com.thegiftjournal.portable-journal and schemaVersion remains 1.

Portable Journal Export exists so the meaningful contents of a journal can be inspected, archived or processed without requiring The Gift Journal or access to its private CloudKit implementation. There is no proprietary wrapper to decode and no special filename extension to rename first.

Opening the file

The export is a normal .zip archive. Save it somewhere convenient, then open or extract it with the ZIP support already built into macOS, iOS/iPadOS file providers, Windows, Linux or a third-party archive tool.

The simplest way to understand an export is to read README.txt first, then inspect manifest.json and journal.json. Developers can validate the JSON against the v1 JSON Schema included in the same archive.

What is inside the ZIP

Portable Journal Export.zip
├── README.txt
├── manifest.json
├── journal.json
├── v1 JSON Schema (.json)
└── assets/
    └── referenced image files, when present

The schema file is the JSON Schema supplied by the export for schema version 1. Its exact filename should be taken from the archive rather than guessed by external tools.

Contained file formats

FileFormatWhat it is for
README.txtPlain textThe human starting point. It explains the portable format, the archive contents and how the versioned files relate to one another.
manifest.jsonJSONA small package manifest for format/version metadata. Readers should use it to identify the semantic format and schema version before interpreting the journal data.
journal.jsonJSONThe user-meaningful journal data and relationships: People, Occasions, Gift Ideas/history, Hints, Context and Wishlist data, together with supported planning, budget and fulfilment meaning.
v1 JSON SchemaJSON SchemaThe machine-readable definition of the v1 JSON structure. It is the authoritative reference for exact property names, data types, required/optional fields and allowed values.
assets/Referenced image filesImages are stored as ordinary files and referenced from the JSON rather than being embedded as large base64 strings. Preserve their relative paths and bytes when archiving or processing an export.

How to read journal.json

The JSON is a semantic export, not a copy of the app's internal database. Stable identifiers preserve relationships between records, so a Gift remains one Gift even when it appears for more than one recipient or Occasion. Treat identifiers as opaque values and use the relationships described by the data rather than trying to reconstruct records from screen labels.

Journal conceptMeaning represented in the portable data
PeopleLong-lived relationship records such as identity, birthday/relationship context, notes, preferences and supported photo references.
OccasionsOccasion identity and planning meaning, including dates/recurrence, Person relationships, supported budget/currency data and logical Occasion-plan relationships.
Gift Ideas / GiftsOne stable Gift identity with title/notes, URL/image/source information, price/currency, status, recipients, Occasion coverage, dates, provenance and supported fulfilment fields such as arrival, tracking/reference, order/reference and return-by information.
HintsLightweight clues associated with a Person and optionally an Occasion, including supported text, URL, image, tags and provenance relationships.
ContextTime-aware relationship context such as interests, life changes and other remembered details, with supported type/date/tag and archive/pinning meaning.
WishlistThe user's private Wishlist records, including supported title, description, URL, image, price, priority and notes.

Use the included JSON Schema for exact field names. The table above describes the meaning of the records; it is not a substitute for the schema. External tools should read the manifest/schema instead of assuming internal Swift model names or translated UI labels.

Rules for external readers

  • Read manifest.json first and check that the semantic format is com.thegiftjournal.portable-journal and that your tool supports the declared schema version.
  • Validate journal.json with the JSON Schema included in that export before relying on particular fields or enum values.
  • Treat stable identifiers as opaque relationship keys. Do not create a second Gift simply because the same Gift is linked to several People.
  • Use language-neutral stored meaning rather than translated labels shown in the app. Localisation is presentation; it does not redefine the portable semantics.
  • Resolve image references to files inside assets/. Do not expect images to be embedded inside journal.json.

Privacy boundary

The portable ZIP is not a private CloudKit dump. It deliberately excludes implementation-only material such as CloudKit ancestry/revisions, pending sync queues, deletion tombstones, StoreKit/entitlement state, diagnostics, widget caches and similar app-internal state.

Protected Gifts, Hints and Wishlist items are excluded by default. An authenticated Include protected items export can deliberately include protected records; protected-Hint provenance remains privacy-sensitive so protected clue text is not leaked indirectly.

Portable export is not Full Backup

Full Backup is the app's lossless recovery format and may contain implementation-specific recovery information needed by The Gift Journal. Portable Journal Export contains durable, user-meaningful journal concepts intended to remain independently understandable. They are intentionally separate contracts.

Portable export is not Selective Sharing

Selective Sharing uses a smaller, deliberately curated projection. Sending a Wishlist, Occasion plan or Gift recommendation does not expose the sender's complete Portable Journal ZIP.

Versioning and compatibility

The change to a standard .zip container did not create a new semantic format. Portable Journal Export v1 still uses the same format identifier and schemaVersion 1. External readers should make compatibility decisions from the manifest and included schema, not from The Gift Journal's internal storage or from a proprietary file extension.

Import

Portable Journal Import is not supported in v1.0. The public ZIP and schema are for export, inspection and interoperability; they do not mean arbitrary third-party JSON can be imported into the private journal.