{"id":25976044,"url":"https://github.com/cewitte/cupcakecorner","last_synced_at":"2025-07-09T15:36:31.803Z","repository":{"id":277520394,"uuid":"932426738","full_name":"cewitte/CupcakeCorner","owner":"cewitte","description":"Paul Hudson's 100 Days with SwiftUI Project 10: CupcakeCorner","archived":false,"fork":false,"pushed_at":"2025-06-05T23:40:56.000Z","size":3718,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T00:29:00.356Z","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,"zenodo":null}},"created_at":"2025-02-13T22:27:23.000Z","updated_at":"2025-06-05T23:40:59.000Z","dependencies_parsed_at":"2025-02-14T11:33:04.728Z","dependency_job_id":"2a078c56-e698-47c7-8378-057925c6b22c","html_url":"https://github.com/cewitte/CupcakeCorner","commit_stats":null,"previous_names":["cewitte/cupcakecorner"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cewitte/CupcakeCorner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cewitte%2FCupcakeCorner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cewitte%2FCupcakeCorner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cewitte%2FCupcakeCorner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cewitte%2FCupcakeCorner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cewitte","download_url":"https://codeload.github.com/cewitte/CupcakeCorner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cewitte%2FCupcakeCorner/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264486502,"owners_count":23616063,"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:34:02.416Z","updated_at":"2025-07-09T15:36:31.776Z","avatar_url":"https://github.com/cewitte.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CupcakeCorner\n\n## Project 10\n\nSource URL: [Cupcake Corner: Introduction](https://www.hackingwithswift.com/books/ios-swiftui/cupcake-corner-introduction)\n\n\"A multi-screen app for ordering cupcakes. This will use a couple of forms, but it also shows how to send and receive the order data from the internet, how to validate forms, and more.\n\nAs we continue to dig deeper and deeper into `Codable`, we'll see how flexible and safe it is. In particular, it is very different it is from the much older `UserDefaults` API – it’s so nice not having to worry about typing strings exactly correctly!\"\n\nThe `main` branch contains Paul Hudson's complete code minus the challenges, which are in their own branches.\n\n### Challenge 1\n\nOur address fields are currently considered valid if they contain anything, even if it’s just only whitespace. Improve the validation to make sure a string of pure whitespace is invalid.\n\nBranch: `challenge-01`\n\n### Challenge 2\n\nIf our call to `placeOrder()` fails – for example if there is no internet connection – show an informative alert for the user. To test this, try commenting out the `request.httpMethod = \"POST\"` line in your code, which should force the request to fail.\n\nBranch: `challenge-02`\n\n![Network Error](/network_error.png)\n\n### Accessibility challenge\n\nBranch: `accessibility-challenge`\n\n\u003eThe check out view in Cupcake Corner uses an image and loading spinner that don’t add anything to the UI, so find a way to make the screenreader not read them out.\n\nThis is obtained by attaching the following modifier to the cupcake image:\n\n```swift\n.accessibilityHidden(true)\n```\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)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcewitte%2Fcupcakecorner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcewitte%2Fcupcakecorner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcewitte%2Fcupcakecorner/lists"}