{"id":13340065,"url":"https://github.com/FridayTechnologies/PrototypeKit","last_synced_at":"2025-03-11T16:32:05.279Z","repository":{"id":220312797,"uuid":"751305842","full_name":"FridayTechnologies/PrototypeKit","owner":"FridayTechnologies","description":"A swift package to make prototyping machine learning experiences for Apple Platforms more accessible to early developers.","archived":false,"fork":false,"pushed_at":"2024-06-06T16:38:52.000Z","size":4143,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2024-10-24T04:26:25.902Z","etag":null,"topics":["coreml","createml","ios","ipados","machine-learning","macos","swift","visionos"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FridayTechnologies.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2024-02-01T10:47:44.000Z","updated_at":"2024-06-07T11:28:47.000Z","dependencies_parsed_at":"2024-10-24T00:10:53.972Z","dependency_job_id":"0b774dc3-b7fa-43e4-9950-b46d89d2a1e6","html_url":"https://github.com/FridayTechnologies/PrototypeKit","commit_stats":{"total_commits":8,"total_committers":1,"mean_commits":8.0,"dds":0.0,"last_synced_commit":"7b78526fab7668e6687441a98b5d5eca475dea07"},"previous_names":["fridaytechnologies/prototypekit"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FridayTechnologies%2FPrototypeKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FridayTechnologies%2FPrototypeKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FridayTechnologies%2FPrototypeKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FridayTechnologies%2FPrototypeKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FridayTechnologies","download_url":"https://codeload.github.com/FridayTechnologies/PrototypeKit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243070389,"owners_count":20231444,"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","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":["coreml","createml","ios","ipados","machine-learning","macos","swift","visionos"],"created_at":"2024-07-29T19:22:07.354Z","updated_at":"2025-03-11T16:32:00.256Z","avatar_url":"https://github.com/FridayTechnologies.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PrototypeKit\n\n[![Swift](https://github.com/FridayTechnologies/PrototypeKit/actions/workflows/swift.yml/badge.svg)](https://github.com/FridayTechnologies/PrototypeKit/actions/workflows/swift.yml)\n\n(Ironically, a prototype itself...) 😅\n\n**Status**: Work In Progress\n\n## Goals 🥅\n- Make it easier to prototype basic Machine Learning apps with SwiftUI\n- Provide an easy interface for commonly built views to assist with prototyping and idea validation\n- Effectively a wrapper around the more complex APIs, providing a simpler interface (perhaps not all the same functionality, but enough to get you started and inspired!)\n\n# Examples\n\nHere are a few basic examples you can use today.\n\n## Camera Tasks\n\n### Start Here\n\n1. Ensure you have created your Xcode project\n2. Ensure you have added the PrototypeKit package to your project (instructions above -- coming soon)\n3. Select your project file within the project navigator.\n\u003cimg width=\"443\" alt=\"Screenshot 2024-02-02 at 3 42 28 pm\" src=\"https://github.com/FridayTechnologies/PrototypeKit/assets/10896308/815aba65-a0c7-4b82-83ee-2af66e04e550\"\u003e\n\n4. Ensure that your target is selected\n\u003cimg width=\"295\" alt=\"Screenshot 2024-02-02 at 3 43 22 pm\" src=\"https://github.com/FridayTechnologies/PrototypeKit/assets/10896308/131d5c0b-6d57-40b3-a88b-29e9631a0e03\"\u003e\n\n5. Select the info tab.\n6. Right-click within the \"Custom iOS Target Properties\" table, and select \"Add Row\"\n\u003cimg width=\"741\" alt=\"Screenshot 2024-02-02 at 3 44 40 pm\" src=\"https://github.com/FridayTechnologies/PrototypeKit/assets/10896308/cbf05317-4b26-4f55-aab4-cea09a01e7e7\"\u003e\n\n7. Use `Privacy - Camera Usage Description` for the key. Type the reason your app will use the camera as the value.\n\u003cimg width=\"834\" alt=\"Screenshot 2024-02-02 at 3 46 30 pm\" src=\"https://github.com/FridayTechnologies/PrototypeKit/assets/10896308/3b88dcf0-dda3-44df-9f65-8aed00618326\"\u003e\n\n\n### Live Camera View\n\nUtilise `PKCameraView`\n\n```swift\nPKCameraView()\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eFull Example\u003c/summary\u003e\n\u003cbr\u003e\n    \n```swift\nimport SwiftUI\nimport PrototypeKit\n\nstruct ContentView: View {\n    var body: some View {\n        VStack {\n            PKCameraView()\n        }\n        .padding()\n    }\n}\n```\n\u003c/details\u003e\n\n\n### Live Image Classification\n\n1. **Required Step:** Drag in your Create ML / Core ML model into Xcode.\n2. Change `FruitClassifier` below to the name of your Model.\n3. You can use latestPrediction as you would any other state variable (i.e refer to other views such as Slider)\n\nUtilise `ImageClassifierView`\n\n```swift\nImageClassifierView(modelURL: FruitClassifier.urlOfModelInThisBundle,\n                    latestPrediction: $latestPrediction)\n```\n\u003cdetails\u003e\n\u003csummary\u003eFull Example\u003c/summary\u003e\n\u003cbr\u003e\n    \n```swift\nimport SwiftUI\nimport PrototypeKit\n\nstruct ImageClassifierViewSample: View {\n    \n    @State var latestPrediction: String = \"\"\n    \n    var body: some View {\n        VStack {\n            ImageClassifierView(modelURL: FruitClassifier.urlOfModelInThisBundle,\n                                latestPrediction: $latestPrediction)\n            Text(latestPrediction)\n        }\n    }\n}\n```\n\u003c/details\u003e\n\n\n### Live Text Recognition\n\nUtilise `LiveTextRecognizerView`\n\n```swift\nLiveTextRecognizerView(detectedText: $detectedText)\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eFull Example\u003c/summary\u003e\n\u003cbr\u003e\n    \n```swift\nimport SwiftUI\nimport PrototypeKit\n\nstruct TextRecognizerView: View {\n    \n    @State var detectedText: [String] = []\n    \n    var body: some View {\n        VStack {\n            LiveTextRecognizerView(detectedText: $detectedText)\n            \n            ScrollView {\n                ForEach(Array(detectedText.enumerated()), id: \\.offset) { line, text in\n                    Text(text)\n                }\n            }\n        }\n    }\n}\n```\n\u003c/details\u003e\n\n### Live Hand Pose Classification\n\n1. **Required Step:** Drag in your Create ML / Core ML model into Xcode.\n2. Change `HandPoseClassifier` below to the name of your Model.\n3. You can use latestPrediction as you would any other state variable (i.e refer to other views such as Slider)\n\nUtilise `HandPoseClassifierView`\n\n```swift\nHandPoseClassifierView(modelURL: HandPoseClassifier.urlOfModelInThisBundle,\n                                 latestPrediction: $latestPrediction)\n```\n\u003cdetails\u003e\n\u003csummary\u003eFull Example\u003c/summary\u003e\n\u003cbr\u003e\n    \n```swift\nimport SwiftUI\nimport PrototypeKit\n\nstruct HandPoseClassifierViewSample: View {\n    \n    @State var latestPrediction: String = \"\"\n    \n    var body: some View {\n        VStack {\n            HandPoseClassifierView(modelURL: HandPoseClassifier.urlOfModelInThisBundle,\n                                   latestPrediction: $latestPrediction)\n            Text(latestPrediction)\n        }\n    }\n}\n```\n\u003c/details\u003e\n\n### Live Sound Classification (System Sound Classifier)\nThis model uses the system sound classifier, and does not currently support custom Sound Classifier Models.\n\n1. You can use recognizedSound as you would any other state variable (i.e refer to other views such as Slider)\n\nUtilise `recognizeSounds` modifier\n\n```swift\n.recognizeSounds(recognizedSound: $recognizedSound)\n```\n\u003cdetails\u003e\n\u003csummary\u003eFull Example\u003c/summary\u003e\n\u003cbr\u003e\n    \n```swift\nimport SwiftUI\nimport PrototypeKit\nstruct SoundAnalyzerSampleView: View {\n    @State var recognizedSound: String?\n    \n    var body: some View {\n        VStack {\n            Text(recognizedSound ?? \"No Sound\")\n        }\n        .padding()\n        .navigationTitle(\"Sound Recogniser Sample\")\n        .recognizeSounds(recognizedSound: $recognizedSound)\n    }\n}\n```\n\u003c/details\u003e\n\n## FAQs\n\n\u003cdetails\u003e\n\u003csummary\u003eIs this production ready?\u003c/summary\u003e\n\u003cbr\u003e\nno.\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFridayTechnologies%2FPrototypeKit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFridayTechnologies%2FPrototypeKit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFridayTechnologies%2FPrototypeKit/lists"}