39 lines
2.0 KiB
Markdown
39 lines
2.0 KiB
Markdown
# 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
|