{"adoption": {"forks": 152, "observed_at": "2026-08-28T04:05:33.790162+00:00", "stars": 1769}, "canonical_url": "https://ross.abutalabs.com/products/jot", "card": {"archived": false, "artifact_type": "framework", "description": "An iOS framework for easily adding drawings and text to images.", "domain": ["mobile-development", "image-processing", "graphics"], "enriched": true, "function": ["image-processing", "ui-components", "gui"], "health_score": 20, "homepage": "http://ifttt.github.io", "language": "Objective-C", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["IFTTT/jot"], "name": "IFTTT/jot", "platform": [], "pushed_at": "2023-10-11T20:39:45+00:00", "repo": "IFTTT/jot", "stars": 1769, "tags": ["objective-c", "drawing", "annotation", "touch-interface", "cocoapods", "signatures", "sketching", "ios", "mobile", "swift"], "topics": [], "urls": [], "use_cases": ["annotate images with touch drawings and text in an iOS app", "build a whiteboard or drawing app with adjustable stroke color and width", "collect user signatures via a touch interface and save them as images", "add resizable, rotatable text captions on top of photos", "render drawings and text onto an image for saving"], "what_it_is": "Jot is an iOS framework by IFTTT for adding touch-controlled drawings and text to images. It supports annotating images, sketching, and capturing signatures, rendering results as images.", "when_to_avoid": ["you need cross-platform drawing support beyond iOS", "you prefer a Swift-native or actively developed modern alternative", "you need advanced image editing features beyond drawing and text"], "when_to_choose": ["you need touch-based drawing, annotation, or signature capture in an iOS app", "you want a simple Objective-C framework installable via CocoaPods", "you need to render drawings and text onto images for export"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jot", "repo": "IFTTT/jot", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:26:05.194852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d928a63f83827464c5e48740218d3b1474ec1c3719f87008fcfadb3fe7248e96", "fetched_at": "2026-08-28T04:05:33.790162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IFTTT/jot"}, {"content_hash": "b8de95f95b5811a33dfa4d74acda01ed64a9cb46608961483c754e6eed3c44a3", "fetched_at": "2026-08-29T11:04:22.422839+00:00", "kind": "homepage", "missing": false, "url": "http://ifttt.github.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:26:05.194852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d928a63f83827464c5e48740218d3b1474ec1c3719f87008fcfadb3fe7248e96", "fetched_at": "2026-08-28T04:05:33.790162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IFTTT/jot"}, {"content_hash": "b8de95f95b5811a33dfa4d74acda01ed64a9cb46608961483c754e6eed3c44a3", "fetched_at": "2026-08-29T11:04:22.422839+00:00", "kind": "homepage", "missing": false, "url": "http://ifttt.github.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:26:05.194852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d928a63f83827464c5e48740218d3b1474ec1c3719f87008fcfadb3fe7248e96", "fetched_at": "2026-08-28T04:05:33.790162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IFTTT/jot"}, {"content_hash": "b8de95f95b5811a33dfa4d74acda01ed64a9cb46608961483c754e6eed3c44a3", "fetched_at": "2026-08-29T11:04:22.422839+00:00", "kind": "homepage", "missing": false, "url": "http://ifttt.github.io"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:26:05.194852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d928a63f83827464c5e48740218d3b1474ec1c3719f87008fcfadb3fe7248e96", "fetched_at": "2026-08-28T04:05:33.790162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IFTTT/jot"}, {"content_hash": "b8de95f95b5811a33dfa4d74acda01ed64a9cb46608961483c754e6eed3c44a3", "fetched_at": "2026-08-29T11:04:22.422839+00:00", "kind": "homepage", "missing": false, "url": "http://ifttt.github.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:26:05.194852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d928a63f83827464c5e48740218d3b1474ec1c3719f87008fcfadb3fe7248e96", "fetched_at": "2026-08-28T04:05:33.790162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IFTTT/jot"}, {"content_hash": "b8de95f95b5811a33dfa4d74acda01ed64a9cb46608961483c754e6eed3c44a3", "fetched_at": "2026-08-29T11:04:22.422839+00:00", "kind": "homepage", "missing": false, "url": "http://ifttt.github.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:26:05.194852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d928a63f83827464c5e48740218d3b1474ec1c3719f87008fcfadb3fe7248e96", "fetched_at": "2026-08-28T04:05:33.790162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IFTTT/jot"}, {"content_hash": "b8de95f95b5811a33dfa4d74acda01ed64a9cb46608961483c754e6eed3c44a3", "fetched_at": "2026-08-29T11:04:22.422839+00:00", "kind": "homepage", "missing": false, "url": "http://ifttt.github.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:33.790162+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:26:05.194852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d928a63f83827464c5e48740218d3b1474ec1c3719f87008fcfadb3fe7248e96", "fetched_at": "2026-08-28T04:05:33.790162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IFTTT/jot"}, {"content_hash": "b8de95f95b5811a33dfa4d74acda01ed64a9cb46608961483c754e6eed3c44a3", "fetched_at": "2026-08-29T11:04:22.422839+00:00", "kind": "homepage", "missing": false, "url": "http://ifttt.github.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:26:05.194852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d928a63f83827464c5e48740218d3b1474ec1c3719f87008fcfadb3fe7248e96", "fetched_at": "2026-08-28T04:05:33.790162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IFTTT/jot"}, {"content_hash": "b8de95f95b5811a33dfa4d74acda01ed64a9cb46608961483c754e6eed3c44a3", "fetched_at": "2026-08-29T11:04:22.422839+00:00", "kind": "homepage", "missing": false, "url": "http://ifttt.github.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:26:05.194852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d928a63f83827464c5e48740218d3b1474ec1c3719f87008fcfadb3fe7248e96", "fetched_at": "2026-08-28T04:05:33.790162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IFTTT/jot"}, {"content_hash": "b8de95f95b5811a33dfa4d74acda01ed64a9cb46608961483c754e6eed3c44a3", "fetched_at": "2026-08-29T11:04:22.422839+00:00", "kind": "homepage", "missing": false, "url": "http://ifttt.github.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:26:05.194852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d928a63f83827464c5e48740218d3b1474ec1c3719f87008fcfadb3fe7248e96", "fetched_at": "2026-08-28T04:05:33.790162+00:00", "kind": "readme", "missing": false, "url": "https://github.com/IFTTT/jot"}, {"content_hash": "b8de95f95b5811a33dfa4d74acda01ed64a9cb46608961483c754e6eed3c44a3", "fetched_at": "2026-08-29T11:04:22.422839+00:00", "kind": "homepage", "missing": false, "url": "http://ifttt.github.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4132, "days_push": 1057, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}