;; ehsan-meter -- good deeds tracking meter
(define-data-var deed-count uint u0)
(define-map deeds uint { doer: principal, category: (string-ascii 20), note: (string-ascii 50), block: uint })
(define-map user-totals principal uint)
(define-public (log-deed (category (string-ascii 20)) (note (string-ascii 50)))
(let ((id (+ (var-get deed-count) u1))
(prev (default-to u0 (map-get? user-totals tx-sender))))
(var-set deed-count id)
(map-set deeds id { doer: tx-sender, category: category, note: note, block: stacks-block-height })
(map-set user-totals tx-sender (+ prev u1)) (ok id)))
(define-read-only (get-deed (id uint)) (map-get? deeds id))
(define-read-only (get-user-total (addr principal)) (default-to u0 (map-get? user-totals addr)))