2.0 KiB
2.0 KiB
Build Checklist (Canva-like Editor)
Milestone 1 — Core model + renderer
- PRD & V1 gates approved (social/flyer, text/image/shape/bg/groups, PNG/PDF, no realtime)
- Doc schema + TS types + validator + migrate(doc)
- Pinia stores split (doc/ui/history/assets) + command dispatcher
- Stage: zoom/pan, fit-to-screen, zoom-to-selection (retina-safe)
- Render Text/Image/Shape/Group with lock/visible + z-order
- Selection/transform: click/shift, marquee, move/resize/rotate, keyboard nudge; drag = single history entry
- Snapping + guides (page center, edges, other elements)
Milestone 2 — Tools + history
- Text tool: create/edit (textarea overlay), font load, style panel (size/weight/color/align)
- Image tool: upload/place, drag-drop, fit/fill crop toggle
- Shapes: rect/circle/line, stroke/fill, corner radius
- Undo/redo via command pattern (Ctrl/Cmd+Z, Shift+Z) with tests
Milestone 3 — Persistence & export
- Autosave + debounced patch API (create/fetch/update doc)
- Version table entries; basic conflict strategy (last-write wins)
- Client PNG export (respects devicePixelRatio)
- Server PDF export job (queue + downloadable result, font embedding handled)
Milestone 4 — Layers, arrange, templates
- Layers panel (list/z-order, lock/eye, rename, drag reorder)
- Arrange tools (bring fwd/back, align, distribute)
- Group/ungroup with proper transform propagation
- Template ingestion (validated doc JSON + metadata) + gallery UI (category/search, create-from-template)
Milestone 5 — Assets + perf/reliability
- Upload pipeline (signed URL, metadata, thumbs)
- Library UI (recent uploads, drag to canvas)
- Perf: virtualized layers, bbox cache, throttled snapping, offscreen previews
- Crash recovery: local draft restore
- Tests: commands/migrations unit, golden render, Playwright E2E for core flows
Milestone 6 — (Optional) Collaboration prep
- Decision doc: CRDT vs OT vs locking; presence stub behind a flag