;; loom-guild -- textile weaving guild membership
(define-data-var member-count uint u0)
(define-map members principal { name: (string-ascii 30), skill: (string-ascii 20), products: uint })
(define-data-var product-count uint u0)
(define-map products uint { maker: principal, type: (string-ascii 20), price: uint, block: uint })
(define-public (join-guild (name (string-ascii 30)) (skill (string-ascii 20)))
(begin (var-set member-count (+ (var-get member-count) u1))
(map-set members tx-sender { name: name, skill: skill, products: u0 }) (ok true)))
(define-public (add-product (type (string-ascii 20)) (price uint))
(let ((id (+ (var-get product-count) u1)))
(var-set product-count id)
(map-set products id { maker: tx-sender, type: type, price: price, block: stacks-block-height }) (ok id)))
(define-read-only (get-member (addr principal)) (map-get? members addr))
(define-read-only (get-product (id uint)) (map-get? products id))