Kicking Off #30DaysOfSwiftUI: Starting Point and Table of Contents

Hutomo Sakti Kartiko
6 min readFeb 29, 2024

--

Selamat datang di-challenge “30 Days of SwiftUI”! Ini merupakan challenge lanjutan dari #30DaysOfSwift yang telah selesai dilakukan sebelumnya.

Berikut beberapa harapan yang bisa didapatkan ketika tantangan ini selesai:

  • Mengetahui bagaimana SwiftUI bekerja.
  • Mengetahui komponen-komponen utama pada SwiftUI.
  • Mengetahui bagaimana integrasi dengan Peripheral perangkat.
  • Mengetahui bagaimana integrasi dengan Firebase.
  • Mengetahui bagaimana integrasi dengan REST APIs, WebSocket, dan GraphQL, dan Supabase.
  • Mengetahui bagaimana penerapan struktur proyek yang baik dengan MVVM dan VIPER.
  • Mengetahui bagaimana pembuatan Unit & UI Testing.
  • Mengetahui bagaimana penerapan Reactive Programming.
  • Mengetahui bagaimana me-deploy aplikasi ke Appstore.
  • Mengetahui bagaimana membuat CI/CD untuk SwiftUI.

List of Contents

Sesuai dengan namanya, tantangan ini dilaksanakan selama 30 hari penuh. Selama waktu yang terbatas, setiap materi yang akan diplejari harus direncakan dengan baik, sehingga dapat mencapai tujuan yang diinginkan. Berikut ringkasan singkat apa aja yang akan dipelajari setiap harinya:

Day 1: Embarking on Your Journey with SwiftUI

  • Gain a basic understanding of what SwiftUI is and its advantages.
  • Setup Xcode and create your first SwiftUI project.
  • Understand the basic structure of SwiftUI code.

Day 2: Understanding the Fundamentals of Views in SwiftUI

  • Learn about the concept of Views in SwiftUI.
  • Explore various basic Views such as Text, Image, and Button.
  • Understand how to combine Views using Stacks and modifiers.

Day 3: Building Dynamic User Interactions with SwiftUI Controls

  • Explore SwiftUI Controls for user input, including TextField, Toggle, and Picker.
  • Learn how to handle user interactions and data binding.
  • Build dynamic UIs that respond to user input using SwiftUI Controls.

Day 4: Controlling Flexible Layouts with SwiftUI Stacks

  • Understand the concept of Stacks in SwiftUI for flexible layout management.
  • Explore VStack, HStack, and ZStack for arranging Views vertically, horizontally, and in layers.
  • Learn how to use Spacer and alignment modifiers to control spacing and alignment within Stacks.

Day 5: Exploring Your App with SwiftUI Navigation

  • Learn how to navigate between different screens in your SwiftUI app.
  • Explore NavigationView and NavigationLink for hierarchical navigation.
  • Understand how to pass data between views during navigation.

Day 6: Bringing Your Interface to Life with SwiftUI Animations

  • Explore built-in animation capabilities in SwiftUI.
  • Learn how to animate view transitions, opacity, and position.
  • Understand how to create custom animations and effects in SwiftUI.

Day 7: Carving Creativity with Amazing SwiftUI Modifiers

  • Learn about Modifiers in SwiftUI for styling and customizing Views.
  • Explore common Modifiers like padding, background, and font.
  • Understand how to chain multiple Modifiers to achieve complex styling effects.

Day 8: Securing Your App with Firebase Authentication

  • Integrate Firebase Authentication into your SwiftUI app for user authentication.
  • Implement sign-up, sign-in, and sign-out functionalities.
  • Understand how to handle user authentication states and errors.

Day 9: Exploring the Data Ocean with Firebase Firestore

  • Integrate Firebase Firestore into your SwiftUI app for real-time data storage.
  • Learn how to perform basic CRUD (Create, Read, Update, Delete) operations with Firestore.
  • Understand how to structure and organize data in Firestore.

Day 10: Engaging Your Users with Firebase Cloud Messaging Notifications

  • Integrate Firebase Cloud Messaging into your SwiftUI app for push notifications.
  • Learn how to send and receive push notifications to engage users.
  • Understand how to handle notifications and user interactions.

Day 11: Measuring Performance with Firebase Analytics

  • Integrate Firebase Analytics into your SwiftUI app to track user engagement and behavior.
  • Learn how to set up event tracking and user properties.
  • Understand how to analyze app performance and user trends using Firebase Analytics.

Day 12: Managing Emergencies with Care using Firebase Crashlytics

  • Integrate Firebase Crashlytics into your SwiftUI app for crash reporting and analysis.
  • Learn how to monitor app stability and diagnose crashes.
  • Understand how to prioritize and fix critical issues using Crashlytics data.

Day 13: Keeping Data Close with Local Storage in SwiftUI

  • Explore local data storage options in SwiftUI, including UserDefaults and CoreData.
  • Learn how to store and retrieve data locally on the device.
  • Understand when to use each local storage option based on the complexity of your data.

Day 14: Connecting with the World Through REST APIs

  • Integrate REST APIs into your SwiftUI app to fetch and display remote data.
  • Learn how to make network requests using URLSession or Alamofire.
  • Understand how to parse JSON responses and handle errors.

Day 15: Bringing High-Speed Connectivity with WebSocket SwiftUI

  • Integrate WebSocket communication into your SwiftUI app for real-time data exchange.
  • Learn how to establish WebSocket connections and handle incoming messages.
  • Understand how to update UI dynamically based on WebSocket events.

Day 16: Unleashing Graph Power with GraphQL Integration in SwiftUI

  • Integrate GraphQL APIs into your SwiftUI app for efficient data fetching.
  • Learn how to construct GraphQL queries and mutations.
  • Understand how to leverage Apollo Client or other GraphQL libraries in SwiftUI.

Day 17: Organizing Your Project with MVVM Architecture in SwiftUI

  • Learn about MVVM (Model-View-ViewModel) architecture and its benefits.
  • Understand how to separate concerns and responsibilities in your SwiftUI app using MVVM.
  • Implement MVVM architecture in your project for better code organization and testability.

Day 18: Strengthening Security with Local Authentication in SwiftUI

  • Integrate local authentication methods like Face ID and Touch ID into your SwiftUI app.
  • Learn how to authenticate users using biometric authentication.
  • Understand how to handle authentication errors and fallback mechanisms.

Day 19: Tapping into Peripheral Potential with SwiftUI Integration

  • Integrate peripheral device features like camera, microphone, and sensors into your SwiftUI app.
  • Learn how to request permissions and access hardware features.
  • Understand how to capture and process data from peripheral devices.

Day 20: Combining Data with Reactivity Using Combine SwiftUI

  • Learn about Combine framework for reactive programming in SwiftUI.
  • Explore Publishers, Subscribers, and Operators for handling asynchronous data streams.
  • Understand how to use Combine with SwiftUI to create reactive UIs and data flows.

Day 21: Testing Your Foundations with SwiftUI Unit Testing

  • Learn how to write unit tests for SwiftUI views, view models, and utility classes.
  • Explore XCTest framework for writing and running unit tests.
  • Understand best practices for structuring and organizing unit tests in SwiftUI projects.

Day 22: Testing Your Views with SwiftUI UI Testing

  • Learn how to write UI tests for SwiftUI views and user interactions.
  • Explore XCTest framework for writing and running UI tests.
  • Understand how to automate UI testing and handle asynchronous UI updates.

Day 23: Enhancing Structure with VIPER Architecture in SwiftUI

  • Learn about VIPER (View-Interactor-Presenter-Entity-Router) architecture and its principles.
  • Understand how to separate responsibilities and dependencies in your SwiftUI app using VIPER.
  • Implement VIPER architecture in your project for improved scalability and maintainability.

Day 24: Managing Complexity with State Persistence in SwiftUI

  • Learn about different techniques for managing state persistence in SwiftUI, including UserDefaults, CoreData, and Keychain.
  • Understand how to persist user preferences, app settings, and sensitive data securely.
  • Explore best practices for handling data persistence and data migration in SwiftUI apps.

Day 25: Opening Doors with Localization and Accessibility in SwiftUI

  • Learn how to localize your SwiftUI app for different languages and regions.
  • Understand best practices for managing localized strings and resources.
  • Explore accessibility features in SwiftUI for making your app accessible to users with disabilities.

Day 26: Crafting Authentic Experiences with Supabase Authentication Integration in SwiftUI

  • Integrate Supabase Authentication into your SwiftUI app for user authentication.
  • Implement sign-up, sign-in, and sign-out functionalities.
  • Understand how to handle user authentication states and errors.

Day 27: Storing and Sharing with Supabase Storage and Database Integration in SwiftUI

  • Integrate Supabase Storage and Database into your SwiftUI app for cloud storage and data persistence.
  • Learn how to upload and download files with Supabase Storage.
  • Understand how to perform CRUD operations with Supabase Database.

Day 28: Introducing Your App to the World by Uploading to the App Store

  • Learn the process of preparing and uploading your SwiftUI app to the App Store.
  • Understand the requirements, guidelines, and best practices for App Store submission.
  • Explore tools and resources for managing app metadata, screenshots, and app distribution.

Day 29: Speeding Up Development Lifecycle with CI/CD in SwiftUI

  • Learn how to set up Continuous Integration (CI) and Continuous Deployment (CD) pipelines for your SwiftUI app.
  • Understand the benefits of automating build, test, and deployment processes.
  • Explore popular CI/CD services like GitHub Actions, Bitrise, and Fastlane.

Day 30: Pursuing Speed with Performance Optimization in SwiftUI

  • Learn performance optimization techniques for improving the responsiveness and efficiency of your SwiftUI app.
  • Understand how to identify and address performance bottlenecks.
  • Explore tools and strategies for measuring and monitoring app performance.

Nantinya setiap list of contents akan mempunyai artikelnya sendiri, sehingga topik yang dibahas bisa lebih detail. Selain itu, artikel ini nantinya akan terhubung ke artikel lainnya yang akan selalu di-update secara berkala jika artikel pertopik sudah selesai. So, stay tuned!

Follow me on:

--

--