Source Code

;; Contract: Decentralized To-Do List
;; Description: Store and complete tasks on-chain.

(define-map tasks { user: principal, id: uint } { name: (string-ascii 40), done: bool })
(define-data-var task-counter uint u0)

(define-public (add-task (name (string-ascii 40)))
    (let
        (
            (new-id (+ (var-get task-counter) u1))
        )
        (var-set task-counter new-id)
        (map-set tasks { user: tx-sender, id: new-id } { name: name, done: false })
        (ok new-id)
    )
)

(define-public (complete-task (id uint))
    (let
        (
            (task (unwrap! (map-get? tasks { user: tx-sender, id: id }) (err u404)))
        )
        (map-set tasks { user: tx-sender, id: id } (merge task { done: true }))
        (ok "Task Completed")
    )
)

Functions (2)

FunctionAccessArgs
add-taskpublicname: (string-ascii 40
complete-taskpublicid: uint