Problem
Users can't add notes or memos to transactions for record-keeping. Need memo system with optional encryption for sensitive information.
Proposed Solution
Add memo field to transactions with optional end-to-end encryption for private notes.
Technical Implementation
New Files:
backend/services/MemoService.js - Memo service
backend/services/memo/EncryptionService.js - Memo encryption
backend/models/TransactionMemo.js - Memo model
backend/controllers/memoController.js - Memo endpoints
backend/routes/memos.js - Memo routes
backend/migrations/20260327000026_create_transaction_memos.js - Migration
backend/tests/memo.test.js - Test suite
Modify:
backend/models/Transaction.js - Add memo relationship
backend/controllers/transactionController.js - Add memo support
backend/services/PaymentService.js - Include memo in payments
Memo Structure
{
transactionId: "txn_123",
memo: "Payment for web development services",
isEncrypted: false,
visibility: "private", // private, shared, public
tags: ["invoice", "business"],
attachments: ["receipt.pdf"],
createdAt: "2025-01-26T10:30:00Z"
}
// Encrypted memo
{
transactionId: "txn_456",
encryptedMemo: "U2FsdGVkX1...",
isEncrypted: true,
visibility: "private",
encryptionKey: "user_public_key_hash"
}
API Endpoints
POST /api/transactions/:id/memo
Body: {
memo: "Payment for services",
isEncrypted: false,
visibility: "private",
tags: ["business"]
}
GET /api/transactions/:id/memo
PATCH /api/transactions/:id/memo
DELETE /api/transactions/:id/memo
// Search by memo
GET /api/transactions/search?memo=invoice
Acceptance Criteria
Priority
Medium - Useful for record-keeping
Problem
Users can't add notes or memos to transactions for record-keeping. Need memo system with optional encryption for sensitive information.
Proposed Solution
Add memo field to transactions with optional end-to-end encryption for private notes.
Technical Implementation
New Files:
backend/services/MemoService.js- Memo servicebackend/services/memo/EncryptionService.js- Memo encryptionbackend/models/TransactionMemo.js- Memo modelbackend/controllers/memoController.js- Memo endpointsbackend/routes/memos.js- Memo routesbackend/migrations/20260327000026_create_transaction_memos.js- Migrationbackend/tests/memo.test.js- Test suiteModify:
backend/models/Transaction.js- Add memo relationshipbackend/controllers/transactionController.js- Add memo supportbackend/services/PaymentService.js- Include memo in paymentsMemo Structure
API Endpoints
Acceptance Criteria
Priority
Medium - Useful for record-keeping