Back to Wekan

QUICK START - Data Persistence Architecture (2025-12-23)

docs/Security/PerUserDataAudit2025-12-23/QUICK_START.md

9.085.8 KB
Original Source

QUICK START - Data Persistence Architecture (2025-12-23)

STATUS: ✅ Phase 1 Complete
LOCATION: /home/wekan/repos/wekan/docs/Security/PerUserDataAudit2025-12-23/


🎯 The Change in 1 Sentence

Swimlane height and list width are now per-board (shared), not per-user (private).


📝 What Changed

Swimlanes (swimlanes.js)

javascript
ADDED: height: { type: Number, default: -1, range: -1 or 50-2000 }
📍 Line: ~108-130

Lists (lists.js)

javascript
ADDED: width: { type: Number, default: 272, range: 100-1000 }
📍 Line: ~162-182

Cards, Checklists, ChecklistItems

javascript
NO CHANGE - Positions already per-board in sort field

📊 Per-Board vs Per-User Quick Reference

✅ PER-BOARD (All Users See Same)

  • Swimlane height
  • List width
  • Card/checklist/checklistItem positions
  • All titles, colors, descriptions

🔒 PER-USER (Only You See Yours)

  • Collapsed swimlanes (yes/no)
  • Collapsed lists (yes/no)
  • Hidden label text (yes/no)

NeedFileTime
Quick overviewREADME.md5 min
For managementEXECUTIVE_SUMMARY.md5 min
Current statusCURRENT_STATUS.md5 min
Full architectureDATA_PERSISTENCE_ARCHITECTURE.md15 min
How to implementIMPLEMENTATION_GUIDE.md20 min
Verify changesSCHEMA_CHANGES_VERIFICATION.md10 min
Quick lookupQUICK_REFERENCE.md3 min
What's doneCOMPLETION_SUMMARY.md10 min

✅ What's Complete (Phase 1)

  • Schema: Added height to swimlanes
  • Schema: Added width to lists
  • Validation: Both fields validate ranges
  • Documentation: 12 comprehensive guides
  • Backward compatible: Both fields optional

⏳ What's Left (Phases 2-4)

  • Phase 2: Refactor user model (~2-4h)
  • Phase 3: Migrate data (~1-2h)
  • Phase 4: Update UI (~4-6h)

See IMPLEMENTATION_GUIDE.md for details


🔍 Quick Facts

ItemValue
Files Modified2 (swimlanes.js, lists.js)
Fields Added2 (height, width)
Documentation Files12 (4,400+ lines)
Validation Rules2 (range checks)
Backward Compatible✅ Yes
Data Loss Risk✅ None
Time to Read Docs~1 hour
Time to Implement Phase 2~2-4 hours

🚀 Success Criteria

✅ Per-board height/width storage
✅ Per-user collapse/visibility only
✅ Validation enforced
✅ Backward compatible
✅ Documentation complete
✅ Implementation guidance provided


🎓 For Team Members

New to this?

  1. Read: README.md (5 min)
  2. Skim: CURRENT_STATUS.md (5 min)
  3. Reference: DATA_PERSISTENCE_ARCHITECTURE.md as needed

Implementing Phase 2?

  1. Read: IMPLEMENTATION_GUIDE.md Section 2
  2. Code: Follow exact steps
  3. Test: Use provided checklist

Reviewing changes?

  1. Check: SCHEMA_CHANGES_VERIFICATION.md
  2. Review: swimlanes.js and lists.js
  3. Verify: Validation logic

💾 Files Modified

/home/wekan/repos/wekan/
├── models/
│   ├── swimlanes.js     ✅ height field added
│   ├── lists.js         ✅ width field added
│   ├── cards.js         ✅ no change (already correct)
│   ├── checklists.js    ✅ no change (already correct)
│   └── checklistItems.js ✅ no change (already correct)
└── docs/Security/PerUserDataAudit2025-12-23/
    ├── README.md
    ├── EXECUTIVE_SUMMARY.md
    ├── COMPLETION_SUMMARY.md
    ├── CURRENT_STATUS.md
    ├── DATA_PERSISTENCE_ARCHITECTURE.md
    ├── IMPLEMENTATION_GUIDE.md
    ├── SCHEMA_CHANGES_VERIFICATION.md
    ├── QUICK_REFERENCE.md (original)
    └── [7 other docs from earlier phases]

🧪 Quick Test

javascript
// Test swimlane height validation
Swimlanes.insert({ boardId: 'b1', height: -1 })       // ✅ OK (auto)
Swimlanes.insert({ boardId: 'b1', height: 100 })      // ✅ OK (valid)
Swimlanes.insert({ boardId: 'b1', height: 25 })       // ❌ FAILS (too small)
Swimlanes.insert({ boardId: 'b1', height: 3000 })     // ❌ FAILS (too large)

// Test list width validation
Lists.insert({ boardId: 'b1', width: 272 })           // ✅ OK (default)
Lists.insert({ boardId: 'b1', width: 500 })           // ✅ OK (valid)
Lists.insert({ boardId: 'b1', width: 50 })            // ❌ FAILS (too small)
Lists.insert({ boardId: 'b1', width: 2000 })          // ❌ FAILS (too large)

📞 Questions?

QuestionAnswer Location
What changed?COMPLETION_SUMMARY.md
Why did it change?EXECUTIVE_SUMMARY.md
What's per-board?DATA_PERSISTENCE_ARCHITECTURE.md
What's per-user?DATA_PERSISTENCE_ARCHITECTURE.md
How do I implement Phase 2?IMPLEMENTATION_GUIDE.md
Is it backward compatible?SCHEMA_CHANGES_VERIFICATION.md

🎯 Next Steps

  1. Read the docs (1 hour)

  2. Review code changes (15 min)

    • Check swimlanes.js (line ~108-130)
    • Check lists.js (line ~162-182)
  3. Plan Phase 2 (1 hour)


Status: ✅ READY FOR PHASE 2