Skip to main content

Developer notes

Product split​

There are effectively three products to document and maintain:

  1. the local viewer for development and private personal use
  2. the selective export flow for self-hosted copies
  3. the future hosted platform at archive.aveson.co.uk

Keeping those concerns separate will make the codebase easier to evolve.

The runtime app should depend on a compact contract:

  • inbox_index.json
  • archive.sqlite
  • referenced media assets

Everything else is build-time input.

Why this matters​

If the runtime depends on raw messages.json files after export, the hosted package stays larger than necessary and more fragile.

Suggested future services split​

Build service​

Takes a local export and creates a trimmed .tar.gz bundle.

Storage layer​

User-controlled object storage or a private bucket where the bundle lives.

Hosted app​

Loads the bundle by URL after the user signs in and authorizes access.

Metadata service​

Stores account data and encrypted bundle references, but not the archive content itself.

Supabase recommendation​

Supabase is a good fit for:

  • auth
  • user profiles
  • metadata tables
  • row-level security

Supabase should not be treated as the storage location for raw DM bundles if your privacy goal is to avoid holding archive data centrally.