{"id":22369430,"url":"https://github.com/superwall/caffeinepal","last_synced_at":"2025-07-30T19:30:53.089Z","repository":{"id":219181207,"uuid":"748388769","full_name":"superwall/CaffeinePal","owner":"superwall","description":"The world's best caffeine tracking app written in SwiftUI, for Superwall tutorials.","archived":false,"fork":false,"pushed_at":"2025-07-14T21:10:08.000Z","size":7352,"stargazers_count":18,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-29T16:33:38.385Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/superwall.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-01-25T21:34:05.000Z","updated_at":"2025-07-24T17:20:46.000Z","dependencies_parsed_at":"2024-06-13T00:03:44.494Z","dependency_job_id":"9c828d87-3225-4e19-9b49-fda31a69ee47","html_url":"https://github.com/superwall/CaffeinePal","commit_stats":null,"previous_names":["superwall-me/caffeinepal","superwall/caffeinepal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/superwall/CaffeinePal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superwall%2FCaffeinePal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superwall%2FCaffeinePal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superwall%2FCaffeinePal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superwall%2FCaffeinePal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/superwall","download_url":"https://codeload.github.com/superwall/CaffeinePal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superwall%2FCaffeinePal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267928946,"owners_count":24167430,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-04T19:20:50.176Z","updated_at":"2025-07-30T19:30:51.992Z","avatar_url":"https://github.com/superwall.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Implementing StoreKit 2 using SwiftUI, Swift and the Observation Framework\n\nIn this post, we'll teach you all about using StoreKit 2 in your iOS app. We'll be doing all of this in our fictional caffeine tracking app, Caffeine Pal!\n\n![Caffine Pal on iOS](cp.jpg?raw=true \"Caffeine Pal\")\n\n### StoreKit 2 Concepts\nWe'll cover all of the fundamental concepts of StoreKit 2 in your app. Primarily, we'll show end-to-end how to implement...\n\n- 🛍️ Fetching products.\n- 💳 Handling purchasing them.\n- 💲 Displaying their localized prices correctly.\n- 🧑🏻‍💻 Associating StoreKit's `Product` struct with your own data models.\n- 🚀 And, how to use the three main types of purchases: Consumables, non-consumables and subscriptions.\n\nPlus, we'll cover how to test common in-app purchase issues and scenarios. Even better, we can do all of this without even touching App Store Connect.\nSo, if you're new to StoreKit configuration files and how they work, we'll get you up to speed.\n\n### Prerequisites\nThis post assumes you are familiar with SwiftUI, Swift and Xcode. You don't have to be an expert, and if you can build a simple todo list app, you'll be good to go! \nJust download or clone this project to get started. If you have questions, feel free to reach out to us anytime!\n\n### Fun SwiftUI Bits\nWe aim to make the tutorial fun and as realistic as possible. That's why you'll find that Caffeine Pal is nearly a fully functioning app (in fact, if you added `HealthKit`\nto it to actually save the caffeine, it would be!). To that end, there's also some SwiftUI APIs at play, such as:\n\n- The `Observation` framework.\n- SF Symbol Animations\n- Paging horiztonal scrollviews\n- And `TipKit` to name a few!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuperwall%2Fcaffeinepal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuperwall%2Fcaffeinepal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuperwall%2Fcaffeinepal/lists"}