{"adoption": {"forks": 216, "observed_at": "2026-08-28T04:07:00.405757+00:00", "stars": 2549}, "canonical_url": "https://ross.abutalabs.com/products/15daysofanimationsinswift", "card": {"archived": false, "artifact_type": "learning-resource", "description": "A project to learn animations.", "domain": ["mobile-development", "tutorials"], "enriched": true, "function": ["animation"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["larrynatalicio/15DaysofAnimationsinSwift"], "name": "larrynatalicio/15DaysofAnimationsinSwift", "platform": [], "pushed_at": "2016-12-04T03:16:38+00:00", "repo": "larrynatalicio/15DaysofAnimationsinSwift", "stars": 2549, "tags": ["ios-animations", "swift-tutorial", "ui-animation-examples", "learning-project", "sample-code", "ios", "swift"], "topics": [], "urls": [], "use_cases": ["learn how to create iOS animations in Swift", "find examples of UIKit animation techniques", "study navigation bar and lock screen animation implementations", "see how to animate loading dots and progress indicators", "explore stretchy header and gradient animation code", "get inspiration for adding animations to an iOS app"], "what_it_is": "A 15-day learning project by an iOS developer demonstrating a variety of UI animations built in Swift, inspired by the 100 Days of Swift and 30 Days of Swift projects. Each day's animation (navigation bar, lock screen, loading dots, stretchy header, gradients, etc.) is presented as a separate example with GIF showcases.", "when_to_avoid": ["you need a production-ready animation library or framework to drop into your app", "you require up-to-date Swift syntax and modern iOS API support, as the project dates from 2016", "you want maintained code with active support or recent releases", "you are looking for animations outside the iOS/UIKit ecosystem"], "when_to_choose": ["you are learning Swift and want small, self-contained animation examples", "you want to see GIF previews alongside source code for each animation", "you prefer learning by studying a series of progressive daily exercises", "you need inspiration for common iOS UI animation patterns"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/15daysofanimationsinswift", "repo": "larrynatalicio/15DaysofAnimationsinSwift", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:24:06.482238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a9af1d330b9409f6e125e67f511d0b2a1b4a7fbce80bd9dd20283f18395d8742", "fetched_at": "2026-08-28T04:07:00.405757+00:00", "kind": "readme", "missing": false, "url": "https://github.com/larrynatalicio/15DaysofAnimationsinSwift"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:24:06.482238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a9af1d330b9409f6e125e67f511d0b2a1b4a7fbce80bd9dd20283f18395d8742", "fetched_at": "2026-08-28T04:07:00.405757+00:00", "kind": "readme", "missing": false, "url": "https://github.com/larrynatalicio/15DaysofAnimationsinSwift"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:24:06.482238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a9af1d330b9409f6e125e67f511d0b2a1b4a7fbce80bd9dd20283f18395d8742", "fetched_at": "2026-08-28T04:07:00.405757+00:00", "kind": "readme", "missing": false, "url": "https://github.com/larrynatalicio/15DaysofAnimationsinSwift"}], "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:07:00.405757+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:24:06.482238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a9af1d330b9409f6e125e67f511d0b2a1b4a7fbce80bd9dd20283f18395d8742", "fetched_at": "2026-08-28T04:07:00.405757+00:00", "kind": "readme", "missing": false, "url": "https://github.com/larrynatalicio/15DaysofAnimationsinSwift"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:24:06.482238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a9af1d330b9409f6e125e67f511d0b2a1b4a7fbce80bd9dd20283f18395d8742", "fetched_at": "2026-08-28T04:07:00.405757+00:00", "kind": "readme", "missing": false, "url": "https://github.com/larrynatalicio/15DaysofAnimationsinSwift"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:24:06.482238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a9af1d330b9409f6e125e67f511d0b2a1b4a7fbce80bd9dd20283f18395d8742", "fetched_at": "2026-08-28T04:07:00.405757+00:00", "kind": "readme", "missing": false, "url": "https://github.com/larrynatalicio/15DaysofAnimationsinSwift"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.405757+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:24:06.482238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a9af1d330b9409f6e125e67f511d0b2a1b4a7fbce80bd9dd20283f18395d8742", "fetched_at": "2026-08-28T04:07:00.405757+00:00", "kind": "readme", "missing": false, "url": "https://github.com/larrynatalicio/15DaysofAnimationsinSwift"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:24:06.482238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a9af1d330b9409f6e125e67f511d0b2a1b4a7fbce80bd9dd20283f18395d8742", "fetched_at": "2026-08-28T04:07:00.405757+00:00", "kind": "readme", "missing": false, "url": "https://github.com/larrynatalicio/15DaysofAnimationsinSwift"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:24:06.482238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a9af1d330b9409f6e125e67f511d0b2a1b4a7fbce80bd9dd20283f18395d8742", "fetched_at": "2026-08-28T04:07:00.405757+00:00", "kind": "readme", "missing": false, "url": "https://github.com/larrynatalicio/15DaysofAnimationsinSwift"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:24:06.482238+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a9af1d330b9409f6e125e67f511d0b2a1b4a7fbce80bd9dd20283f18395d8742", "fetched_at": "2026-08-28T04:07:00.405757+00:00", "kind": "readme", "missing": false, "url": "https://github.com/larrynatalicio/15DaysofAnimationsinSwift"}], "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": 3774, "days_push": 3559, "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}}