Skip to content

Relationship to the Canto app

The Canto app lives at pboueke.github.io/canto (source). Canto (the app) is GPLv3-licensed. canto-data (this library) is MIT-licensed to enable data portability: anyone can build tools that interoperate with Canto journals without being bound by the app’s copyleft license.

canto-data (MIT)
└── src/
├── types.ts # All TypeScript interfaces
├── validation.ts # Type guards and structural validators
├── version.ts # Schema version constant and semver utils
├── migration.ts # Forward-only migration runner
├── migrations/ # Migration registry
└── format.ts # Export manifest and ZIP format utilities
  • All journal data types (Journal, Page, Attachment, Comment, and related structures)
  • Runtime validation and type guards
  • Schema versioning and migration framework
  • Export format specification (manifest structure and attachment naming)
  • Encryption and decryption
  • Attachment storage, chunk I/O, and byte reassembly
  • Sync integrations and remote uploads
  • UI components

Those pieces live in the Canto app — the app also documents its encryption model in SECURITY.md.

The library is MIT-licensed; see LICENSE. The Canto app is a separate GPLv3 project, so the two licenses stay independent: this package ships no app code.