wekan/docs/Security/PerUserDataAudit2025-12-23/QUICK_START.md
Lauri Ojansivu a039bb1066
Some checks are pending
Docker / build (push) Waiting to run
Docker Image CI / build (push) Waiting to run
Release Charts / release (push) Waiting to run
Test suite / Meteor tests (push) Waiting to run
Test suite / Coverage report (push) Blocked by required conditions
Per-User and Board-level data save fixes. Part 3.
Thanks to xet7 !
2025-12-23 09:03:41 +02:00

203 lines
5.8 KiB
Markdown

# 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)
---
## 📁 Documentation Quick Links
| Need | File | Time |
|------|------|------|
| Quick overview | [README.md](README.md) | 5 min |
| For management | [EXECUTIVE_SUMMARY.md](EXECUTIVE_SUMMARY.md) | 5 min |
| Current status | [CURRENT_STATUS.md](CURRENT_STATUS.md) | 5 min |
| Full architecture | [DATA_PERSISTENCE_ARCHITECTURE.md](DATA_PERSISTENCE_ARCHITECTURE.md) | 15 min |
| How to implement | [IMPLEMENTATION_GUIDE.md](IMPLEMENTATION_GUIDE.md) | 20 min |
| Verify changes | [SCHEMA_CHANGES_VERIFICATION.md](SCHEMA_CHANGES_VERIFICATION.md) | 10 min |
| Quick lookup | [QUICK_REFERENCE.md](QUICK_REFERENCE.md) | 3 min |
| What's done | [COMPLETION_SUMMARY.md](COMPLETION_SUMMARY.md) | 10 min |
---
## ✅ What's Complete (Phase 1)
- [x] Schema: Added height to swimlanes
- [x] Schema: Added width to lists
- [x] Validation: Both fields validate ranges
- [x] Documentation: 12 comprehensive guides
- [x] 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](IMPLEMENTATION_GUIDE.md) for details
---
## 🔍 Quick Facts
| Item | Value |
|------|-------|
| Files Modified | 2 (swimlanes.js, lists.js) |
| Fields Added | 2 (height, width) |
| Documentation Files | 12 (4,400+ lines) |
| Validation Rules | 2 (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](README.md) (5 min)
2. Skim: [CURRENT_STATUS.md](CURRENT_STATUS.md) (5 min)
3. Reference: [DATA_PERSISTENCE_ARCHITECTURE.md](DATA_PERSISTENCE_ARCHITECTURE.md) as needed
**Implementing Phase 2?**
1. Read: [IMPLEMENTATION_GUIDE.md](IMPLEMENTATION_GUIDE.md) Section 2
2. Code: Follow exact steps
3. Test: Use provided checklist
**Reviewing changes?**
1. Check: [SCHEMA_CHANGES_VERIFICATION.md](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?
| Question | Answer Location |
|----------|-----------------|
| What changed? | [COMPLETION_SUMMARY.md](COMPLETION_SUMMARY.md) |
| Why did it change? | [EXECUTIVE_SUMMARY.md](EXECUTIVE_SUMMARY.md) |
| What's per-board? | [DATA_PERSISTENCE_ARCHITECTURE.md](DATA_PERSISTENCE_ARCHITECTURE.md) |
| What's per-user? | [DATA_PERSISTENCE_ARCHITECTURE.md](DATA_PERSISTENCE_ARCHITECTURE.md) |
| How do I implement Phase 2? | [IMPLEMENTATION_GUIDE.md](IMPLEMENTATION_GUIDE.md) |
| Is it backward compatible? | [SCHEMA_CHANGES_VERIFICATION.md](SCHEMA_CHANGES_VERIFICATION.md) |
---
## 🎯 Next Steps
1. **Read the docs** (1 hour)
- Start with [README.md](README.md)
- Skim [CURRENT_STATUS.md](CURRENT_STATUS.md)
2. **Review code changes** (15 min)
- Check swimlanes.js (line ~108-130)
- Check lists.js (line ~162-182)
3. **Plan Phase 2** (1 hour)
- Read [IMPLEMENTATION_GUIDE.md](IMPLEMENTATION_GUIDE.md) Section 2
- Estimate effort needed
- Schedule implementation
---
**Status**: ✅ READY FOR PHASE 2