Skip to content

Add Memo Field for Transactions with Encryption Support #339

@llinsss

Description

@llinsss

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

  • Memo field for all transactions
  • Optional AES-256 encryption
  • Visibility controls (private/shared/public)
  • Tag support for categorization
  • Attachment support (up to 5MB)
  • Search transactions by memo
  • Memo edit history
  • Test coverage > 85%

Priority

Medium - Useful for record-keeping


Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions