mirror of
https://github.com/wekan/wekan.git
synced 2026-01-01 23:28:49 +01:00
203 lines
5.8 KiB
Markdown
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
|
|
|