{"id":25976035,"url":"https://github.com/cewitte/wordscramble","last_synced_at":"2025-06-23T17:06:35.662Z","repository":{"id":249418705,"uuid":"831463489","full_name":"cewitte/WordScramble","owner":"cewitte","description":"Paul Hudson's 100 Days of SwiftUI Project 5.","archived":false,"fork":false,"pushed_at":"2024-07-21T12:44:03.000Z","size":1242,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-05T03:34:13.134Z","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/cewitte.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}},"created_at":"2024-07-20T16:13:43.000Z","updated_at":"2024-07-20T18:38:53.000Z","dependencies_parsed_at":"2025-03-05T03:34:05.095Z","dependency_job_id":"e13d315b-66c7-402b-a0e6-3733edba3444","html_url":"https://github.com/cewitte/WordScramble","commit_stats":null,"previous_names":["cewitte/wordscramble"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cewitte/WordScramble","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cewitte%2FWordScramble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cewitte%2FWordScramble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cewitte%2FWordScramble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cewitte%2FWordScramble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cewitte","download_url":"https://codeload.github.com/cewitte/WordScramble/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cewitte%2FWordScramble/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261518865,"owners_count":23171224,"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":[],"created_at":"2025-03-05T03:33:57.428Z","updated_at":"2025-06-23T17:06:35.642Z","avatar_url":"https://github.com/cewitte.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WordScramble\nPaul Hudson's 100 Days of SwiftUI Project 5.\n\n## Accessibility support added\n\nPaul added the `.accessibility...` code to the HStack below. `.accessibilityElement` groups the whole stack together. `.accessibilityLabel` makes VoiceOver read the word, and `.accessibilityHint` reads how many letters the word has. These changes make it possible for people with disabilities to play the game. If those changes weren't present, it would make it a very bad experience, i.e. VoiceObver would try to describe the image, which would add confusion to the context.\n\n```swift\nvar body: some View {\n        NavigationStack {\n            List {\n                Section {\n                    TextField(\"Enter your word\", text: $newWord)\n                        .textInputAutocapitalization(.never)\n                }\n                \n                Section {\n                    ForEach(usedWords, id: \\.self) { word in\n                        HStack {\n                            Image(systemName: \"\\(word.count).circle\")\n                            Text(word)\n                        }\n                        .accessibilityElement()\n                        .accessibilityLabel(word)\n                        .accessibilityHint(\"\\(word.count) letters\")\n                    }\n                }\n            }\n            .navigationTitle(rootWord)\n            .onSubmit(addNewWord)\n            .onAppear(perform: startGame)\n            .alert(errorTitle, isPresented: $showingError) {\n                Button(\"OK\") {}\n            } message: {\n                Text(errorMessage)\n            }\n        }\n    }\n```\n\nAlthough it can only be experienced in a real device with VoiceOver turned on, here's the the working app:\n\n![Word Sramble app](./images/word_scramble.gif)\n\n## Acknowledgments\n\nOriginal code created by: [Paul Hudson - @twostraws](https://x.com/twostraws) (Thank you!)\n\nMade with :heart: by [@cewitte](https://x.com/cewitte)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcewitte%2Fwordscramble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcewitte%2Fwordscramble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcewitte%2Fwordscramble/lists"}