{"componentChunkName":"component---src-templates-section-tsx","path":"/swiftui-ios18-organizing-your-project","result":{"data":{"section":{"title":"Organizing Your Project","subtitle":"A guide to structuring and refactoring SwiftUI projects efficiently","slug":"swiftui-ios18-organizing-your-project","videoDuration":1464,"releaseDate":null,"tags":null,"contentful_id":"22nxo4E9SY23ZJD5zx5HdL","isFree":false,"illustration":null,"source":null,"colors":null,"chapter":[{"title":"Build SwiftUI apps for iOS 18 with Cursor and Xcode","slug":"swiftui-ios18","hoursOfVideo":5,"description":{"description":"In this course, we'll explore the exciting new features of SwiftUI 6 and Xcode 16 for building iOS 18 apps. From mesh gradients and text animations to ripple effects, you'll learn how to create polished, highly custom apps using the latest workflows. We'll also dive into using Cursor and Claude AI for AI-driven coding, helping you start strong and customize your apps."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}}],"instructors":[{"name":"Meng To","slug":"instructor/meng","avatar":{"fluid":{"src":"//images.ctfassets.net/ooa29xqb8tix/1legcDgYFWKJm5NXFxARCj/6a5061ad1691687a7729678860e39114/_9_0Nd2X_400x400-2.png?w=200&h=200&q=50"}}}],"illustration":{"file":{"url":"//images.ctfassets.net/ooa29xqb8tix/28pvjtcaN279xWRHDNIfJj/c431224d8e51d772df4d1d09cbeabc22/SwiftUI-iOS18.svg"}},"illustrationConverted":{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/5GsDSIJIIjm1dgQX3suPD0/bd18319eb64dbfe976c4724bc421fa1b/SwiftUI-iOS18_2x.png?w=400&q=50"}},"colors":["#494FFE","#0F1324"],"sections":[{"title":"Build SwiftUI apps for iOS 18 with Cursor and Xcode","subtitle":"Learn to develop iOS apps using SwiftUI 6, Xcode 16, Cursor and Claude AI","slug":"swiftui-ios18-course","videoDuration":394,"releaseDate":null,"tags":["iOS 18 development","swiftui 6 course","Xcode 16 course"]},{"title":"Intro to SwiftUI 6 and Xcode 16","subtitle":"Unlocking Development Skills Through Hands-On Practice","slug":"swiftui-ios18-intro-to-swiftui-6-and-xcode-16","videoDuration":892,"releaseDate":null,"tags":null},{"title":"Create your first iOS app with Claude AI","subtitle":"Starting with SwiftUI and Claude AI to generate code to paste in Xcode","slug":"swiftui-ios18-create-your-first-ios-app-with-claude-ai","videoDuration":676,"releaseDate":null,"tags":null},{"title":"Intro to Cursor with Claude AI and SwiftUI","subtitle":"Getting Started with Cursor: A Guide for Beginners","slug":"swiftui-ios18-intro-to-cursor-with-claude-ai-and-swiftui","videoDuration":482,"releaseDate":null,"tags":["cursor composer","iOS development cursor"]},{"title":"Cursor Workflow","subtitle":"VSCode extensions for SwiftUI, Cursor Composer, Commits and Xcode Errors","slug":"swiftui-ios18-cursor-workflow","videoDuration":1031,"releaseDate":null,"tags":["cursor workflow","Xcode errors","vscode extensions swiftui"]},{"title":"Customize UI from AI","subtitle":"Elevating AI-Generated UIs with SwiftUI: A Comprehensive Guide","slug":"swiftui-ios18-customize-ui-from-ai","videoDuration":938,"releaseDate":null,"tags":null},{"title":"ChatGPT Work With and Mesh Gradient","subtitle":"Exploring Mesh Gradients in iOS 18 with AI and SwiftUI","slug":"swiftui-ios18-chatgpt-work-with-and-mesh-gradient","videoDuration":762,"releaseDate":null,"tags":["mesh gradient","ChatGPT work with"]},{"title":"Masking and Outlines","subtitle":"Creating Eye-Catching UI with Gradients, Masks, and Outlines in SwiftUI","slug":"swiftui-ios18-masking-and-outlines","videoDuration":807,"releaseDate":null,"tags":["gradient mask","blur radius"]},{"title":"Animated Mesh Gradient","subtitle":"Learn how to bring stunning, dynamic mesh gradients to life in your SwiftUI apps","slug":"swiftui-ios18-animated-mesh-gradient-in-swiftui","videoDuration":1026,"releaseDate":null,"tags":null},{"title":"Ripple Effect","subtitle":"Implementing Apple's Ripple Effect from iOS 18 in Your SwiftUI Project","slug":"swiftui-ios18-ripple-effect","videoDuration":1214,"releaseDate":null,"tags":null},{"title":"Figma to SwiftUI Code","subtitle":"How to Export Accurate SwiftUI Code from Figma Designs","slug":"swiftui-ios18-figma-to-swiftui-code","videoDuration":873,"releaseDate":null,"tags":["figma to code","figma to swiftui"]},{"title":"Xcode with Claude AI using Alex Sidebar","subtitle":"How to Use Alex Sidebar for AI-Powered iOS Development","slug":"swiftui-ios18-xcode-with-claude-ai-using-alex-sidebar","videoDuration":1180,"releaseDate":null,"tags":null},{"title":"Cursor Agent and API Call","subtitle":"How to Integrate AI Features in Your App Using Cursor Agent and Claude AI","slug":"swiftui-ios18-cursor-agent-and-api-call","videoDuration":1359,"releaseDate":null,"tags":["cursor agent","openai api"]},{"title":"Swift Package and Markdown","subtitle":"Adding Markdown and Streaming Capabilities to Your SwiftUI App","slug":"swiftui-ios18-swift-package-and-markdown","videoDuration":968,"releaseDate":null,"tags":null},{"title":"Organizing Your Project","subtitle":"A guide to structuring and refactoring SwiftUI projects efficiently","slug":"swiftui-ios18-organizing-your-project","videoDuration":1464,"releaseDate":null,"tags":null},{"title":"Prompt Templates","subtitle":"Enhancing Your App with Prompt Templates and Styling in SwiftUI","slug":"swiftui-ios18-prompt-templates","videoDuration":993,"releaseDate":null,"tags":null},{"title":"Text Animation and Dark Mode","subtitle":"How to blend AI capabilities with your design expertise to build stunning, functional apps in SwiftUI.","slug":"swiftui-ios18-text-animation-and-dark-mode","videoDuration":1438,"releaseDate":null,"tags":null}],"releaseDate":"2024-11-25","isFreeCourse":false,"isFeatured":true,"tags":["SwiftUI Course","iOS 18 development","cursor iOS development","swiftui 6","Xcode 16","cursor ai","figma to code","predictive code completion","cursor composer ios"],"promoUrl":null,"contentType":"Course","source":{"file":{"url":"//downloads.ctfassets.net/ooa29xqb8tix/Jov3sqNQrNuKAtVNX8QQn/dd843a6a6c4eea39b104c7c9d70c9301/SwiftUI_for_iOS_18.zip"}}}],"author":[{"name":"Meng To","jobTitle":"I design, code and write","twitterHandle":"@MengTo","biography":{"biography":"Meng To is the author of Design+Code. Meng started off his career as a self-taught designer from Montreal and eventually traveled around the world for 2 years as his US VISA was denied. During his travels, he wrote a book which now has 35,000 readers."},"avatar":{"fluid":{"src":"//images.ctfassets.net/ooa29xqb8tix/1legcDgYFWKJm5NXFxARCj/6a5061ad1691687a7729678860e39114/_9_0Nd2X_400x400-2.png?w=200&h=200&q=50"}},"location":"Montreal, Canada","slug":"instructor/meng","chapter":[{"title":"Master AI Prompting for Stunning UI","slug":"prompt-ui","hoursOfVideo":10,"description":{"description":"Learn how to leverage AI tools like Aura for creating beautiful designs, working with templates, and experimenting with advanced prompts. A concise guide for designers and developers to level up their skills."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7bIHb2z3qClO9GfyPwj6nP/4cb3a08cdc0d34645540b1295f96dc67/Logo_React.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7bIHb2z3qClO9GfyPwj6nP/4cb3a08cdc0d34645540b1295f96dc67/Logo_React.png?w=400&q=50"}}],"releaseDate":"2025-07-09"},{"title":"Figma Handbook","slug":"figma-handbook","hoursOfVideo":6,"description":{"description":"A comprehensive guide to the best tips and tricks in Figma. Not affiliated with or endorsed by Figma, Inc."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/5X8HW6RyHdZRKbzp8MsvIp/b20e44a78f747d70836fcf1db1960d36/The_Figma_Handbook-.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6ml4Ii6ZJ3CSnDM5boThH6/3b2551cdf07316c9c82f09b83b2f64b8/figma-logo.png?w=400&q=50"}}],"releaseDate":"2020-10-12"},{"title":"Create your Dream Apps with Cursor and Claude AI","slug":"cursor","hoursOfVideo":6,"description":{"description":"Learn to build your dream web apps from the ground up using Cursor, Claude AI, and a suite of powerful AI tools. This course covers everything you need, including React for frontend development, Firebase for backend integration, and Stripe for handling payments. You’ll also dive into advanced AI tools like Claude Artifacts, Galileo AI, v0.dev for UI, Ideogram for design generation, and Cursor Composer for full-scale development. "},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7bIHb2z3qClO9GfyPwj6nP/4cb3a08cdc0d34645540b1295f96dc67/Logo_React.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7bIHb2z3qClO9GfyPwj6nP/4cb3a08cdc0d34645540b1295f96dc67/Logo_React.png?w=400&q=50"}}],"releaseDate":"2024-09-10"},{"title":"Build SwiftUI apps for iOS 18 with Cursor and Xcode","slug":"swiftui-ios18","hoursOfVideo":5,"description":{"description":"In this course, we'll explore the exciting new features of SwiftUI 6 and Xcode 16 for building iOS 18 apps. From mesh gradients and text animations to ripple effects, you'll learn how to create polished, highly custom apps using the latest workflows. We'll also dive into using Cursor and Claude AI for AI-driven coding, helping you start strong and customize your apps."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}}],"releaseDate":"2024-11-25"},{"title":"SwiftUI Handbook","slug":"swiftui-handbook","hoursOfVideo":7,"description":{"description":"A comprehensive series of tutorials covering Xcode, SwiftUI and all the layout and development techniques"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6MFFWO1k38yxTrLKRZ26e8/2c07fa6c2c4653bfae00dd87625d6e56/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6YcYeXOUXJR311G9VyFniz/8bd9148821a2fba3e783b68a0ba9c509/swift-logo.png?w=400&q=50"}}],"releaseDate":"2021-02-10"},{"title":"Build a React Site from Figma to Codux","slug":"codux","hoursOfVideo":2,"description":{"description":"In this course, you'll learn to build a website from scratch using Codux, starting with a Figma template. You’ll master responsive design, collaborate with developers on a real React project, export CSS from Figma using Locofy, set up breakpoints with media queries, add CSS animations, improve SEO, create multiple pages with React Router, and publish your site. By following best practices, you’ll bridge design and development, improve your web design skills."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7bIHb2z3qClO9GfyPwj6nP/4cb3a08cdc0d34645540b1295f96dc67/Logo_React.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/1bYdUtniEAUH3jdqQd3Qc1/7cf21d20882bfe59f01d7bc74e81010d/react-logo.png?w=400&q=50"}}],"releaseDate":"2024-06-03"},{"title":"Create 3D UI for iOS and visionOS in Spline","slug":"spline-ios","hoursOfVideo":3,"description":{"description":"Comprehensive 3D Design Course: From Basics to Advanced Techniques for iOS and visionOS using SwiftUI"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/0cjyplK9nhXoHTHN3XfTr/0e1edc5106a4c99ca2de7eeaaa772603/ui-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6juoPj4aiabGla63SQ1Vuk/2590bfb5fa2758afb9df3a0c7d04f456/ui-logo.png?w=400&q=50"}}],"releaseDate":"2024-03-28"},{"title":"Master No-Code Web Design with Framer","slug":"framer-web-design","hoursOfVideo":4,"description":{"description":"In this free Framer course, you'll learn to create modern, user-friendly interfaces. Start with dark mode and glass designs, then move from Figma to Framer, using vectors and auto layout for responsive websites. Add animations, interactive buttons, and custom components with code. Finally, you'll craft a design system suitable for teamwork or solo projects, all in a straightforward and practical approach."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6wKL78pR08vwXE1lqdnmqQ/3fae44b2af1858454fa6c34fafe68cf1/framer-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6wKL78pR08vwXE1lqdnmqQ/3fae44b2af1858454fa6c34fafe68cf1/framer-logo.png?w=400&q=50"}}],"releaseDate":"2024-03-12"},{"title":"UI Design Livestreams","slug":"uidesign-livestream","hoursOfVideo":26,"description":{"description":"This is a compilation of the UI live streams hosted by Meng. Over there he talks and teaches how to use design systems, typography, navigation, iOS 14 Design, prototyping, animation and Developer Handoff."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/5AVBPtP9grDiODXJ9nfXs2/765775fd64ce833db98e56dfdcb329f5/LiveStreams_1-.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/0cjyplK9nhXoHTHN3XfTr/0e1edc5106a4c99ca2de7eeaaa772603/ui-logo.png?w=400&q=50"}}],"releaseDate":"2020-07-06"},{"title":"Build SwiftUI Apps for iOS 17","slug":"swiftui-ios17","hoursOfVideo":4,"description":{"description":"In this course, we’ll be exploring the fresh and exciting features of SwiftUI 5! As we craft a variety of iOS apps from the ground up, we'll delve deep into the treasure trove that is SwiftUI's user interface, interactions, and animations."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}}],"releaseDate":"2023-09-13"},{"title":"Build a 3D Site Without Code with Framer","slug":"framer-3d-site","hoursOfVideo":3,"description":{"description":"Design and publish a responsive site with 3D animation without writing a single line of code"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/36Sz3YbYNvqsOoFjoopwCu/0795cc8d5a71ed0e7800fe5abdf75e5a/framer-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/36Sz3YbYNvqsOoFjoopwCu/0795cc8d5a71ed0e7800fe5abdf75e5a/framer-logo.png?w=400&q=50"}}],"releaseDate":"2022-08-30"},{"title":"Build Beautiful Apps with GPT-4 and Midjourney","slug":"gpt4","hoursOfVideo":4,"description":{"description":"Design and develop apps using GPT-4 and Midjourney with prompts for SwiftUI, React, CSS, app concepts, icons, and copywriting"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/60NtiONwcgmR7RlCnuARpG/a81c2477d9e4c92e1b75fdca244082c6/swift-logo.png?w=400&q=50"}}],"releaseDate":"2023-04-15"},{"title":"Build SwiftUI apps for iOS 16","slug":"swiftui-ios16","hoursOfVideo":5,"description":{"description":"Create animated and interactive apps using new iOS 16 techniques using SwiftUI 4 and Xcode 14"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}}],"releaseDate":"2023-01-31"},{"title":"UI Design for Developers","slug":"ui-design","hoursOfVideo":3,"description":{"description":"In this course we'll learn how to use design systems, set up break points, typography, spacing, navigation, size rules for adapting to the iPad, mobile and web versions, and different techniques that translate well from design to code."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/1xCLNfvf3ScLy6TpoERcJR/f9353b5130f7b0db67947de7990ec8c0/UI_course_logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6juoPj4aiabGla63SQ1Vuk/2590bfb5fa2758afb9df3a0c7d04f456/ui-logo.png?w=400&q=50"}}],"releaseDate":"2020-06-16"},{"title":"Build a web app with React Hooks","slug":"react-hooks","hoursOfVideo":4,"description":{"description":"Learn how we built the new Design+Code site with React Hooks using Gatsby, Netlify, and advanced CSS techniques with Styled Components."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/51yN4xSBwG5J3R2BJpP08h/41bc2050fd2a858d65fa787ba4ae2809/logo-react.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/1bYdUtniEAUH3jdqQd3Qc1/7cf21d20882bfe59f01d7bc74e81010d/react-logo.png?w=400&q=50"}}],"releaseDate":"2020-11-18"},{"title":"SwiftUI for iOS 14","slug":"swiftui-ios14","hoursOfVideo":3,"description":{"description":"Build a multi-platform app from scratch using the new techniques in iOS 14. We'll use the Sidebar and Lazy Grids to make the layout adaptive for iOS, iPadOS, macOS Big Sur and we'll learn the new Matched Geometry Effect to create beautiful transitions between screens without the complexity. This course is beginner-friendly and is taught step-by-step in a video format."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6guDDNQRdL7oGqGCfwEi8M/0f78f9ec8fbef1d8e1d52412132f39fc/SwiftUI-iOS14.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/628IYmTv4uib8slYz9iuok/3de9010de04ae92a23c94f9885746db2/swift-logo.png?w=400&q=50"}}],"releaseDate":"2020-07-28"},{"title":"iOS Design Handbook","slug":"ios-design-handbook","hoursOfVideo":2,"description":{"description":"A complete guide to designing for iOS 14 with videos, examples and design files"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7fK97kiaDjcIiUYlFmYa1n/1c6c4dc4e927614da0a149d9e0ed2b28/Logo_iOS14.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7fK97kiaDjcIiUYlFmYa1n/1c6c4dc4e927614da0a149d9e0ed2b28/Logo_iOS14.png?w=400&q=50"}}],"releaseDate":"2021-02-24"},{"title":"Build a SwiftUI app for iOS 15","slug":"swiftui-ios15","hoursOfVideo":4,"description":{"description":"Design and code a SwiftUI 3 app with custom layouts, animations and gestures using Xcode 13, SF Symbols 3, Canvas, Concurrency, Searchable and a whole lot more"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}}],"releaseDate":"2021-10-29"},{"title":"Build an Animated App with Rive and SwiftUI","slug":"swiftui-rive","hoursOfVideo":3,"description":{"description":"Design and code an iOS app with Rive animated assets, icon animations, custom layouts and interactions"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}}],"releaseDate":"2022-05-26"},{"title":"Create 3D Site with Spline and React","slug":"spline","hoursOfVideo":1,"description":{"description":"Design and code a landing page with an interactive 3D asset using Spline and CodeSandbox"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7bIHb2z3qClO9GfyPwj6nP/4cb3a08cdc0d34645540b1295f96dc67/Logo_React.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7bIHb2z3qClO9GfyPwj6nP/4cb3a08cdc0d34645540b1295f96dc67/Logo_React.png?w=400&q=50"}}],"releaseDate":"2022-06-27"},{"title":"SwiftUI Advanced Handbook","slug":"swiftui-advanced-handbook","hoursOfVideo":4,"description":{"description":"An extensive series of tutorials covering advanced topics related to SwiftUI, with a main focus on backend and logic to take your SwiftUI skills to the next level"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/60NtiONwcgmR7RlCnuARpG/a81c2477d9e4c92e1b75fdca244082c6/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6MFFWO1k38yxTrLKRZ26e8/2c07fa6c2c4653bfae00dd87625d6e56/swift-logo.png?w=400&q=50"}}],"releaseDate":"2021-05-05"},{"title":"Build a SwiftUI app for iOS 15 Part 3","slug":"swiftui-ios15-part3","hoursOfVideo":4,"description":{"description":"Design and code a SwiftUI 3 app with custom layouts, animations and gestures using Xcode 13, SF Symbols 3, Canvas, Concurrency, Searchable and a whole lot more"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}}],"releaseDate":"2022-03-01"},{"title":"SwiftUI Livestreams","slug":"swiftui-livestream","hoursOfVideo":19,"description":{"description":"This is a compilation of the SwiftUI live streams hosted by Meng. Over there he talks and teaches how to use design systems, typography, navigation, iOS 14 Design, prototyping, animation and Developer Handoff."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/3DvDmfCD4zA2RTlLVlgXr6/75ac99404f40a7b6c2b268862f2cb64b/Frame_1145-aerate-2.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/78h3yzpjwalQVA3ovZbxLk/946dd5f7101d8568a509a1b88d592f84/swift-logo.png?w=400&q=50"}}],"releaseDate":"2020-07-07"},{"title":"Build a SwiftUI app for iOS 15 Part 2","slug":"swiftui-ios15-part2","hoursOfVideo":3,"description":{"description":"Design and code a SwiftUI 3 app with custom layouts, animations and gestures using Xcode 13, SF Symbols 3, Canvas, Concurrency, Searchable and a whole lot more"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6MFFWO1k38yxTrLKRZ26e8/2c07fa6c2c4653bfae00dd87625d6e56/swift-logo.png?w=400&q=50"}}],"releaseDate":"2021-11-30"},{"title":"Build an app with SwiftUI Part 3","slug":"swiftui3","hoursOfVideo":4,"description":{"description":"This course was written for designers and developers who are passionate about design and about building real apps for iOS, iPadOS, macOS, tvOS and watchOS. SwiftUI works across all of those platforms. While the code is not a one-size-fits-all, the controls and techniques involved can apply to all platforms. It is beginner-friendly, but it is also packed with design tricks and cool workflows about building the best UIs and interactions."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/3dKCM3DydgOmDw6XIyNo9B/a3b822b01963abab638259c1e151c81d/SwiftUI_3.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4R97i35WMdVvFscwTug9yW/70dd9c9de4a20867a5205303692ed841/swift-logo.png?w=400&q=50"}}],"releaseDate":"2020-03-27"},{"title":"Build an app with SwiftUI Part 2","slug":"swiftui2","hoursOfVideo":4,"description":{"description":"This course was written for designers and developers who are passionate about design and about building real apps for iOS, iPadOS, macOS, tvOS and watchOS. SwiftUI works across all of those platforms. While the code is not a one-size-fits-all, the controls and techniques involved can apply to all platforms. It is beginner-friendly, but it is also packed with design tricks and cool workflows about building the best UIs and interactions."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/tFYOIYvDGr6MzgloRGPGf/bd639e78273b30740a39d40973936f10/SWIFTUI2.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6YcYeXOUXJR311G9VyFniz/8bd9148821a2fba3e783b68a0ba9c509/swift-logo.png?w=400&q=50"}}],"releaseDate":"2020-01-07"},{"title":"Build an app with SwiftUI Part 1","slug":"swiftui","hoursOfVideo":4,"description":{"description":"This course was written for designers and developers who are passionate about design and about building real apps for iOS, iPadOS, macOS, tvOS and watchOS. SwiftUI works across all of those platforms. While the code is not a one-size-fits-all, the controls and techniques involved can apply to all platforms. It is beginner-friendly, but it is also packed with design tricks and cool workflows about building the best UIs and interactions."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6MJY3Cg6PAls7x8NmxwJtv/4ba1c796ea027ca1dfea843d66c6ddd7/swiftUI-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6MFFWO1k38yxTrLKRZ26e8/2c07fa6c2c4653bfae00dd87625d6e56/swift-logo.png?w=400&q=50"}}],"releaseDate":"2019-06-26"},{"title":"React Livestreams","slug":"react-livestreams","hoursOfVideo":4,"description":{"description":"Learn how we can use React Hooks to build web apps using libraries, tools, apis and frameworks"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7bIHb2z3qClO9GfyPwj6nP/4cb3a08cdc0d34645540b1295f96dc67/Logo_React.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7bIHb2z3qClO9GfyPwj6nP/4cb3a08cdc0d34645540b1295f96dc67/Logo_React.png?w=400&q=50"}}],"releaseDate":"2021-06-01"},{"title":"Design System in Figma","slug":"figma","hoursOfVideo":3,"description":{"description":"Learn how to use and design a collaborative and powerful design system in Figma. Design Systems provide a shared library of reusable components and guidelines and that will let you build products much faster\n"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/eSZZzGqJIXcvoNp65oV2i/73af7ee3274519ed893f92ef256093ef/logo-figma.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6ml4Ii6ZJ3CSnDM5boThH6/3b2551cdf07316c9c82f09b83b2f64b8/figma-logo.png?w=400&q=50"}}],"releaseDate":"2018-09-04"},{"title":"Learn Sketch","slug":"sketch","hoursOfVideo":5,"description":{"description":"Learn Sketch a design tool entirely vector-based and focused on user interface design"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/376Z8DIpxe3i7TFWMw9fBl/db2db0b05b31cd62bdbc8a00377ed518/logo-sketch.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/5ulKcX2CAvmNjVOH9wGFdj/1e4af5589ef9da4a8d6c3b2b988c9416/sketch-logo.png?w=400&q=50"}}],"releaseDate":"2017-10-24"},{"title":"Swift Advanced","slug":"swift4-advanced","hoursOfVideo":9,"description":{"description":"Learn Swift a robust and intuitive programming language created by Apple for building apps for iOS, Mac, Apple TV and Apple Watch"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/3U4LXYRjOKKmIYmoe8jjMC/a2076c982e23e7beb110749b02f2c7a6/logo-swift-playground.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/60NtiONwcgmR7RlCnuARpG/a81c2477d9e4c92e1b75fdca244082c6/swift-logo.png?w=400&q=50"}}],"releaseDate":"2018-01-08"},{"title":"Advanced Prototyping in ProtoPie","slug":"protopie","hoursOfVideo":3,"description":{"description":"ProtoPie is a cross-platform prototyping tool that creates prototypes nearly as powerful as those made with code, with half of the efforts, and zero code. It's perfect for designers who want to quickly experiment with advanced interactions using variables, conditions, sensors and more."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6RuZxPcPF7HxiKGCir6zk2/eb9335f45fc8cc9a527b8ff5ee3bd514/ProtopieLogo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/3eXL2ZSSDn1djX2GNFhZAl/14a2a112f2cb318538bca2e3783f1909/protopie-logo.png?w=400&q=50"}}],"releaseDate":"2019-08-27"},{"title":"Build a full site in Webflow","slug":"webflow","hoursOfVideo":3,"description":{"description":"Webflow is a design tool that can build production-ready experiences without code. You can implement CSS-driven adaptive layouts, build complex interactions and deploy all in one tool. Webflow also comes with a built-in content management system (CMS) and Ecommerce for creating a purchase experience without the need of third-party tools."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4RktSJmNbGr3p9pLEM4P2e/4949ab8e1d925c60e22024568f94bdda/webflow-mark-vector-blue.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/3VTbVPTfMsto1lbrhW9hfS/71507ececb8b875add7ba10b74bb0c99/webflow-logo.png?w=400&q=50"}}],"releaseDate":"2019-10-17"},{"title":"Design Founder Livestreams","slug":"design-founder-livestreams","hoursOfVideo":2,"description":{"description":"A journey on how we built DesignCode covering product design, management, analytics, revenue and a good dose of learning from our successes and failures"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7aTbwvuImkjF1MleNyq266/0d3c62c39ff650d0b49d32943e7af69f/Logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7aTbwvuImkjF1MleNyq266/0d3c62c39ff650d0b49d32943e7af69f/Logo.png?w=400&q=50"}}],"releaseDate":"2021-05-25"},{"title":"UI Design Handbook","slug":"ui-design-handbook","hoursOfVideo":2,"description":{"description":"A comprehensive guide to the best tips and tricks for UI design. Free tutorials for learning user interface design."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6juoPj4aiabGla63SQ1Vuk/2590bfb5fa2758afb9df3a0c7d04f456/ui-logo.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/mTZWH1XgUw19Ugg2Ul3i0/bdca1f9dbb6ef3c80de5010fb97de4fd/ui-logo.png?w=400&q=50"}}],"releaseDate":"2020-10-12"},{"title":"Learn iOS 11 Design","slug":"ios11-design","hoursOfVideo":1,"description":{"description":"Learn colors, typography and layout for iOS 8"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/6D0jWm8pdW2oClfhGpXdZl/1064a23f9c31dcf425aa51cd131c0ad6/logo-ios11.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/628IYmTv4uib8slYz9iuok/3de9010de04ae92a23c94f9885746db2/swift-logo.png?w=400&q=50"}}],"releaseDate":"2017-10-10"},{"title":"Learn Swift","slug":"swift4","hoursOfVideo":4,"description":{"description":"Learn Swift a robust and intuitive programming language created by Apple for building apps for iOS, Mac, Apple TV and Apple Watch"},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/LNlweV7aTqJjXCo2A9OUV/d3d2e7c52bc3b9e99c6ecc5a0a391ac3/logo-swift.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/4bWEQMRsA6PzjiHljsxryp/55d78d84da072e9c22caddbccd67396b/swift-logo.png?w=400&q=50"}}],"releaseDate":"2017-11-07"},{"title":"React for Designers","slug":"react","hoursOfVideo":3,"description":{"description":"Learn how to build a modern site using React and the most efficient libraries to get your site/product online. Get familiar with Grid CSS, animations, interactions, dynamic data with Contentful and deploying your site with Netlify."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/51yN4xSBwG5J3R2BJpP08h/41bc2050fd2a858d65fa787ba4ae2809/logo-react.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/39xkJS0CvrRBKgMnyLYBks/14d434f819fef062dce8c72efecbc74d/react-logo.png?w=400&q=50"}}],"releaseDate":"2018-07-24"},{"title":"React Native for Designers","slug":"react-native","hoursOfVideo":5,"description":{"description":"React Native is a popular Javascript framework that builds on top of React by using native components to create a real mobile app indistinguishable from one made using Xcode or Android Studio. The main difference with native development is that you get to use CSS, hot-reload, Javascript and other familiar techniques that the Web has grown over the past decades. Most importantly, you're building for both iOS and Android using the same codebase."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/66irryXYcTuNVwWnuuzYz5/6097d6a5f5bf4d44678566034879d2a1/logo-react-native.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/39xkJS0CvrRBKgMnyLYBks/14d434f819fef062dce8c72efecbc74d/react-logo.png?w=400&q=50"}}],"releaseDate":"2019-02-14"},{"title":"React Native for Designers Part 2","slug":"react-native-2","hoursOfVideo":3,"description":{"description":"React Native is a popular Javascript framework that builds on top of React by using native components to create a real mobile app indistinguishable from one made using Xcode or Android Studio. The main difference with native development is that you get to use CSS, hot-reload, Javascript and other familiar techniques that the Web has grown over the past decades. Most importantly, you're building for both iOS and Android using the same codebase."},"logos":[{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/7IFUWf9WvUvQmRNP08hoKZ/9f0ef957befd9961fb2fb30d444ca824/logo-react-native-2.png?w=400&q=50"}},{"fixed":{"src":"//images.ctfassets.net/ooa29xqb8tix/39xkJS0CvrRBKgMnyLYBks/14d434f819fef062dce8c72efecbc74d/react-logo.png?w=400&q=50"}}],"releaseDate":"2019-05-15"}]}]},"en":{"title":"Organizing Your Project","subtitle":"A guide to structuring and refactoring SwiftUI projects efficiently","excerpt":{"markdown":{"html":"<p>As your SwiftUI project grows in size and complexity, managing code effectively becomes crucial. This post will guide you on how to organize your files, components, and services to maintain clarity, scalability, and professionalism. We’ll also explore how AI tools, like <a href=\"https://www.cursor.so/\">Cursor</a>, can streamline the refactoring process.  </p>","excerpt":"As your SwiftUI project grows in size and complexity, managing code effectively becomes crucial. This post will guide you on how to organize…"}},"content":{"markdown":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Why Organize Your SwiftUI Project?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"When projects expand, unorganized code can lead to confusion, unnecessary bugs, and slow development. A structured project helps with:  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Navigability"}]},{"type":"text","value":": Easily locating files and code.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Reusability"}]},{"type":"text","value":": Components and utilities can be reused across the app.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Scalability"}]},{"type":"text","value":": Adding new features becomes seamless.  "}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"hr","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"File and Folder Structure"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A recommended folder structure for SwiftUI projects includes:  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"1. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Components Folder"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For reusable UI components like buttons, cards, etc.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"plaintext"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-plaintext"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-plaintext"]},"children":[{"type":"text","value":"Components/\n  - Button.swift\n  - Card.swift\n  - GeneratedNotesCard.swift"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"2. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Services Folder"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For API calls and external services.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"plaintext"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-plaintext"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-plaintext"]},"children":[{"type":"text","value":"Services/\n  - OpenAIService.swift"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"3. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Utilities Folder"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Reusable utilities and helper functions.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"plaintext"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-plaintext"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-plaintext"]},"children":[{"type":"text","value":"Utilities/\n  - RippleEffect.metal\n  - AnimatedMeshGradient.swift"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"4. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Views Folder"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Holds different full-screen views for the app.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"plaintext"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-plaintext"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-plaintext"]},"children":[{"type":"text","value":"Views/\n  - SignUpView.swift\n  - SpendView.swift"}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"5. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Environment Variables"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Keep sensitive keys like API keys secure using environment variables.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"hr","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Setting Up Environment Variables in Xcode"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"To avoid hardcoding sensitive data like API keys:  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Open Xcode and go to "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Edit Scheme"}]},{"type":"text","value":".  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Under "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Run > Arguments"}]},{"type":"text","value":", add a new environment variable, e.g., "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"OPENAI_KEY"}]},{"type":"text","value":", and set the value.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Access it in your code:  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"swift"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-swift"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-swift"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"let"}]},{"type":"text","value":" apiKey "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"="}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"ProcessInfo"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"processInfo"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"environment"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"["}]},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"OPENAI_KEY\""}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"]"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"?"}]},{"type":"element","tagName":"span","properties":{"className":["token","operator"]},"children":[{"type":"text","value":"?"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","string"]},"children":[{"type":"text","value":"\"\""}]},{"type":"text","value":"  "}]}]}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Learn more about secure practices "},{"type":"element","tagName":"a","properties":{"href":"https://developer.apple.com/documentation/xcode"},"children":[{"type":"text","value":"here"}]},{"type":"text","value":".  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"hr","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Using AI to Refactor Your Project"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tools like "},{"type":"element","tagName":"a","properties":{"href":"https://www.cursor.so/"},"children":[{"type":"text","value":"Cursor"}]},{"type":"text","value":" can automate and simplify refactoring. For instance:  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Moving Code to Appropriate Folders"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Using AI, you can prompt:  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"blockquote","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"\"Move "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"OpenAIService"}]},{"type":"text","value":" to a "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"Services"}]},{"type":"text","value":" folder.\"  "}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"AI will handle the folder creation and file relocation seamlessly, ensuring no import issues.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Creating Reusable Components"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ask AI to extract large chunks of code into reusable components. For example:  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"blockquote","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"\"Create a component for "},{"type":"element","tagName":"code","properties":{"className":["language-text"]},"children":[{"type":"text","value":"GeneratedNotesCard"}]},{"type":"text","value":" and move related code there.\"  "}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"AI will generate cleaner, modular code:  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"swift"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-swift"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-swift"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"struct"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"GeneratedNotesCard"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"View"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"  \n    "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"var"}]},{"type":"text","value":" body"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" some "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"View"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"  \n        "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"VStack"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"  \n            "},{"type":"element","tagName":"span","properties":{"className":["token","comment"]},"children":[{"type":"text","value":"// Card content here  "}]},{"type":"text","value":"\n        "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"  \n    "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"  \n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"  "}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"hr","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Best Practices for SwiftUI Projects"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"1. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Keep Files Under 100-200 Lines"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If a file exceeds this, refactor parts of it into separate components or services.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"2. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Use AI for Testing and Previews"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"AI can auto-generate previews for components:  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{"className":["gatsby-highlight"],"dataLanguage":"swift"},"children":[{"type":"element","tagName":"pre","properties":{"className":["language-swift"]},"children":[{"type":"element","tagName":"code","properties":{"className":["language-swift"]},"children":[{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"struct"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"GeneratedNotesCard_Previews"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"PreviewProvider"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"  \n    "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"static"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","keyword"]},"children":[{"type":"text","value":"var"}]},{"type":"text","value":" previews"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":":"}]},{"type":"text","value":" some "},{"type":"element","tagName":"span","properties":{"className":["token","builtin"]},"children":[{"type":"text","value":"View"}]},{"type":"text","value":" "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"{"}]},{"type":"text","value":"  \n        "},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"GeneratedNotesCard"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"  \n            "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"element","tagName":"span","properties":{"className":["token","function"]},"children":[{"type":"text","value":"previewLayout"}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"("}]},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"."}]},{"type":"text","value":"sizeThatFits"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":")"}]},{"type":"text","value":"  \n    "},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"  \n"},{"type":"element","tagName":"span","properties":{"className":["token","punctuation"]},"children":[{"type":"text","value":"}"}]},{"type":"text","value":"  "}]}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"3. "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Separate Logic and UI"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Keep API calls and logic in services instead of embedding them in views.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"hr","properties":{},"children":[]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Conclusion"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Organizing and refactoring your SwiftUI project into a clean structure isn’t just about aesthetics—it improves maintainability and scalability. By leveraging AI tools like Cursor, you can automate much of the process, saving time and effort.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For additional tools to streamline your SwiftUI development, check out:  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://www.cursor.so/"},"children":[{"type":"text","value":"Cursor"}]},{"type":"text","value":"  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"https://developer.apple.com/swift-playgrounds/"},"children":[{"type":"text","value":"Swift Playgrounds"}]},{"type":"text","value":"  "}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A clean project structure paves the way for faster iterations and a smoother development experience. Happy coding! 🚀  "}]}],"data":{"quirksMode":false}}}}},"contentfulChapter":{"test":null,"metadata":{"title":"Build SwiftUI apps for iOS 18 with Xcode and Cursor","slug":"swiftui-ios18","description":"In this course, we'll explore the exciting new features of SwiftUI 6 and Xcode 16 for building iOS 18 apps. We'll also dive into using Cursor and Claude AI for AI-driven coding, helping you start strong and customize your apps.","keywords":"swiftui course, iOS 18 development, cursor iOS development, swiftui 6, Xcode 16, cursor ai, figma to swiftui, predictive code completion, cursor composer iOS","image":"https://dl.dropboxusercontent.com/s/yvdi3viyf2waapt92y27o/SwiftUI18Cover.jpg?rlkey=ytmkvsi5mmlqo4431evnwzqfq&dl=0"}},"contentfulMetadata":{"title":"Claude Code Crash Course on Agentic Workflows","slug":"claude-code","description":"This course teaches you how to use Claude Code efficiently with slash commands, hooks, parallel workflows, and more. You’ll learn the mindset of working with AI, simplify repetitive tasks and connect tools into one unified agentic workflow.","keywords":"claude code, agentic workflow, slash command, hooks, parallel workflows, ","image":"https://www.dropbox.com/scl/fi/nlvmlv8l7ss5wr2blrwzk/claude-code.jpg?rlkey=blzzwn00ujon53e0xlwwswxa6&dl=0"}},"pageContext":{"slug":"swiftui-ios18-organizing-your-project","contentType":"Courses","isCourse":true,"isLivestream":false,"isTutorial":false,"chapterSlug":"swiftui-ios18"}}}