Data model overview
Projects, plans, pins, tasks, photos, files, layers, contacts - how they fit together.
MyMarkups projects are the top-level container. Everything below is linked by ID so references survive rename, reorder, and migration.
Entities
- Project - name, status, archived flag, created/updated timestamps.
- Plan (PDF) - one or more per project. Holds a scale calibration.
- Pin - a normalized coordinate on a plan page. Anchor for tasks, photos, files, barcodes, contacts.
- Task - priority, due date, status history.
- Layer - vector drawing data scoped to a plan.
- Contact - per-project directory entry. Linkable to tasks, files, pins.
References
Links are stored by UUID. On load, the app reconciles references and removes dangling links so you never crash on stale data.
Persistence
Everything is saved as JSON manifests alongside the raw PDFs, photos and files. Atomic writes with a rolling backup protect against partial saves.