Skip to content

DebugWithAryan/IOS-AppDevelopment

Repository files navigation

📱 iOS App Development Journey

Swift Platform Xcode SwiftUI License

This is my journey towards iOS Development - Learning Swift, building apps, and mastering SwiftUI one project at a time! 🚀


❓ Ready to Challenge Yourself?

Do you want to test your knowledge and prepare for iOS interviews?
I've compiled a curated list of conceptual & logical questions based on my projects, from beginner to advanced.

Click the glowing button below to dive into the QUESTIONS.md file and level up your skills! 🚀

Open Questions


Tip: These questions are perfect for:

  • Swift & SwiftUI concepts review
  • Interview preparation
  • Practicing logic and problem-solving

Don't just read—try to solve them! 💡

👨‍💻 About This Repository

Welcome to my iOS development learning repository! This repo documents my journey as I learn iOS development with Swift and SwiftUI. Here you'll find various projects ranging from simple UI layouts to interactive games and practical utilities.

Started: October 2024
Current Status: Actively Learning & Building
Projects Completed: 4 (and counting!)

📂 Repository Structure

IOS-AppDevelopment/
│
├── My First App/              # First SwiftUI app - Tourist card UI
├── War Card Game/             # Interactive card game with game logic
├── BMI Calculator/            # Health utility app with state management
├── To-Do List/                # Task management app with data persistence
├── SwiftCodePlayground.playground/  # Swift fundamentals practice
├── README.md                  # This file
└── .DS_Store

🚀 Featured Projects

1. 🏞️ My First App - Tourist Card

Created: October 4, 2025
Tech Stack: SwiftUI, ZStack, VStack, HStack

My very first SwiftUI application! A beautiful tourist card showcasing Niagara Falls.

Skills Learned:

  • ✅ SwiftUI basic layout components (VStack, HStack, ZStack)
  • ✅ Image handling and resizing with .resizable() and .aspectRatio()
  • ✅ SF Symbols for system icons
  • ✅ Styling with modifiers (.cornerRadius(), .shadow(), .padding())
  • ✅ Color management and .ignoresSafeArea()
  • ✅ Text formatting and fonts
  • ✅ Layout alignment and spacing

Key Features:

  • 🎨 Custom card design with rounded corners and shadows
  • ⭐ Star rating display using SF Symbols
  • 📱 Responsive layout with proper spacing
  • 🖼️ Image aspect ratio handling

Code Highlights:

// Layered layout with ZStack
ZStack {
    Color(.systemMint).ignoresSafeArea()
    VStack(alignment: .leading, spacing: 20.0) {
        // Card content with image, text, and icons
    }
}

2. 🃏 War Card Game

Created: October 4, 2025
Tech Stack: SwiftUI, State Management, Game Logic

An interactive card game where you compete against the CPU! Draw cards and see who wins each round.

Skills Learned:

  • @State property wrapper for state management
  • ✅ Button actions and user interaction
  • ✅ Function creation and game logic
  • ✅ Random number generation with Int.random(in:)
  • ✅ String interpolation and conversion
  • ✅ Conditional logic (if-else statements)
  • ✅ Variable mutation and score tracking

Key Features:

  • 🎮 Interactive gameplay with button taps
  • 🎲 Random card generation (values 2-14)
  • 📊 Real-time score tracking for Player vs CPU
  • 🎨 Custom game assets and background
  • 🔄 Dynamic UI updates based on game state

Code Highlights:

@State var playerScore: Int = 0
@State var cpuScore: Int = 0

func deal() {
    let playerCardValue = Int.random(in: 2...14)
    let cpuCardValue = Int.random(in: 2...14)
    
    // Update scores based on comparison
    if playerCardValue > cpuCardValue {
        playerScore += 1
    }
}

3. 🏋️ BMI Calculator

Created: October 9, 2025
Tech Stack: SwiftUI, Advanced State Management, Data Models, Animations

A comprehensive BMI (Body Mass Index) calculator supporting both Metric and Imperial units with beautiful animations and health advice.

Skills Learned:

  • ✅ Complex state management with multiple @State properties
  • @Binding for two-way data flow between views
  • ✅ Custom reusable components
  • ✅ Struct data models (BMIResult)
  • ✅ Computed properties for validation
  • ✅ Optional handling with guard let and if let
  • ✅ Switch statements with range patterns
  • ✅ Tuple return types
  • ✅ String formatting with String(format:)
  • ✅ Animations with withAnimation() and .transition()
  • ✅ TextField with keyboard type customization
  • ✅ Picker with SegmentedPickerStyle
  • ✅ Conditional rendering
  • ✅ Color opacity and shadow effects

Key Features:

  • 📊 Real-time BMI calculation with validation
  • 🌍 Support for Metric (kg/cm) and Imperial (lbs/in) units
  • 🎨 Beautiful, modern UI with custom components
  • 🎭 Animated result display with spring animation
  • 💡 Color-coded health categories (Underweight, Normal, Overweight, Obese)
  • 📝 Personalized health advice based on BMI
  • ✨ Input validation with disabled state
  • 🎯 Reusable InputFieldView component

Code Highlights:

// Computed property for validation
private var isInputValid: Bool {
    guard let w = Double(weight), let h = Double(height),
          w > 0, h > 0 else { return false }
    return true
}

// Tuple return for complex data
private func interpretBMI(_ bmi: Double) -> (category: String, color: Color, advice: String) {
    switch bmi {
    case ..<18.5:
        return ("Underweight", .blue, "You may need to gain weight...")
    case 18.5..<25:
        return ("Normal", .green, "Great! You're in a healthy weight range.")
    // ...
    }
}

// Smooth animations
withAnimation(.spring()) {
    showingResult = true
}

4. ✅ To-Do List App

Created: October 10, 2025
Tech Stack: SwiftUI, UserDefaults, Data Persistence, List Management

A fully functional task management app with data persistence! Add, complete, and delete tasks that persist between app launches.

Skills Learned:

  • Protocols: Identifiable, Codable for model conformance
  • UUID: Unique identifier generation for list items
  • UserDefaults: Key-value storage for data persistence
  • JSON Encoding/Decoding: Converting objects to/from JSON
  • List and ForEach: Dynamic list rendering with collections
  • onDelete modifier: Swipe-to-delete gesture handling
  • EditButton: Built-in list editing mode
  • Closures: Function parameters for callbacks
  • Private functions: Encapsulation and code organization
  • guard statements: Early exit patterns for cleaner code
  • Optional chaining: Safe unwrapping with if let
  • Array methods: firstIndex(where:), remove(atOffsets:)
  • Lifecycle methods: .onAppear() for initialization
  • Toolbar customization: Adding navigation bar items
  • Alert dialogs: User feedback with .alert()
  • View composition: Breaking UI into reusable components
  • Ternary operators: Conditional UI rendering
  • ButtonStyle: Customizing button interaction

Key Features:

  • 📝 Add new tasks with TextField input
  • ✓ Mark tasks as complete/incomplete with checkbox
  • 🗑️ Swipe-to-delete functionality
  • 💾 Persistent storage using UserDefaults
  • 🎨 Empty state with helpful message
  • ✏️ Edit mode for managing multiple tasks
  • 🔔 Success alert on task addition
  • 🎯 Disabled button when input is empty
  • 📱 Clean, native iOS interface
  • ⚡ Real-time data synchronization

Code Highlights:

// Data model with protocols
struct Task: Identifiable, Codable {
    var id: UUID
    var title: String
    var isCompleted: Bool
}

// Saving with UserDefaults and JSON
private func saveTasks() {
    if let encoded = try? JSONEncoder().encode(tasks) {
        UserDefaults.standard.set(encoded, forKey: "SavedTasks")
    }
}

// Loading persisted data
private func loadTasks() {
    if let savedData = UserDefaults.standard.data(forKey: "SavedTasks") {
        if let decodedTasks = try? JSONDecoder().decode([Task].self, from: savedData) {
            tasks = decodedTasks
        }
    }
}

// Dynamic list with delete support
List {
    ForEach(tasks) { task in
        TaskRowView(task: task, onToggle: {
            toggleTaskCompletion(task)
        })
    }
    .onDelete(perform: deleteTasks)
}

5. 🌤️ Weather App (Coming Soon)

Status: Planning Phase
Planned Features:

  • API integration with weather service
  • JSON parsing and data handling
  • Location-based weather
  • 5-day forecast display
  • Modern animated UI

💡 Skills Acquired

Swift Programming Fundamentals

  • ✅ Variables and Constants (var, let)
  • ✅ Data Types (String, Int, Double, Bool)
  • ✅ Optionals and Optional Binding
  • ✅ Functions and Parameters
  • ✅ Control Flow (if-else, switch)
  • ✅ Structs and Data Models
  • ✅ Computed Properties
  • ✅ Tuples
  • ✅ String Interpolation and Formatting
  • ✅ Random Number Generation
  • ✅ Type Conversion
  • ✅ Protocols (Identifiable, Codable)
  • ✅ UUID Generation
  • ✅ Closures and Higher-Order Functions
  • ✅ Guard Statements
  • ✅ Optional Chaining
  • ✅ Array Methods (firstIndex, remove)
  • ✅ Ternary Operators

SwiftUI Components

  • Layout: VStack, HStack, ZStack, Spacer, Divider
  • Views: Text, Image, Button, TextField, Picker, List
  • Styling: .padding(), .foregroundColor(), .font(), .background()
  • Visual Effects: .cornerRadius(), .shadow(), .opacity(), .strikethrough()
  • Modifiers: .resizable(), .aspectRatio(), .frame(), .disabled()
  • System Assets: SF Symbols
  • Navigation: NavigationView, Toolbar, EditButton
  • List Features: ForEach, onDelete, listStyle
  • Alerts: .alert() modifier
  • Button Styles: PlainButtonStyle, custom styles

State Management

  • @State - Managing local state
  • @Binding - Two-way data binding between views
  • ✅ State mutations and UI updates
  • ✅ Conditional rendering based on state

Data Persistence

  • UserDefaults: Key-value storage system
  • JSON Encoding: Converting Swift objects to JSON
  • JSON Decoding: Parsing JSON back to objects
  • Data Lifecycle: Loading on appear, saving on changes
  • Error Handling: Optional try with try?

Advanced Concepts

  • ✅ Custom reusable components
  • ✅ Component composition
  • ✅ Data models with structs
  • ✅ Input validation
  • ✅ Animations and transitions
  • ✅ Keyboard type customization
  • ✅ Mathematical calculations
  • ✅ Range patterns in switch statements
  • ✅ List management and editing
  • ✅ Gesture handling (swipe-to-delete)
  • ✅ Lifecycle methods (onAppear)
  • ✅ Private function encapsulation
  • 🔄 Core Data (Upcoming)
  • 🔄 MVVM Architecture (Upcoming)
  • 🔄 Networking & APIs (Upcoming)

📚 Learning Resources

Currently Using

  • 📖 100 Days of SwiftUI by Paul Hudson (Hacking with Swift)
  • 🎥 YouTube Tutorials - Various iOS development channels
  • 📱 Apple Developer Documentation - Official SwiftUI guides
  • 💻 Xcode Playground - Experimenting with Swift syntax

Reference Materials

🎯 Learning Path

Phase 1: Foundations ✅ (Completed)

  • Set up Xcode and development environment
  • Learn Swift basics in Playground
  • Understand SwiftUI layout system
  • Build first UI with VStack/HStack/ZStack
  • Work with Images and SF Symbols

Phase 2: Interactivity ✅ (Completed)

  • Learn @State for reactive updates
  • Implement button actions
  • Add game logic and calculations
  • Handle user input with TextField

Phase 3: Advanced UI ✅ (Completed)

  • Create custom reusable components
  • Master @Binding for data flow
  • Implement form validation
  • Add animations and transitions
  • Build complex layouts

Phase 4: Data Persistence ✅ (Completed)

  • Learn UserDefaults
  • Implement data saving and loading
  • Build To-Do List app
  • Understand data persistence patterns
  • Master JSON encoding/decoding
  • Work with List and ForEach

Phase 5: Architecture 📋 (Upcoming)

  • Learn MVVM pattern
  • Separate business logic from UI
  • Implement ObservableObject
  • Master @Published and @ObservedObject

Phase 6: Advanced Features 📋 (Upcoming)

  • Core Data for complex data
  • Networking and API calls
  • JSON parsing from APIs
  • NavigationStack and routing
  • Async/await patterns

📊 Progress Statistics

Metric Count
Projects Completed 4
Days of Learning 7
SwiftUI Views Mastered 20+
Lines of Code Written 800+
Concepts Learned 40+
Hours Invested 25+

🎓 Month-by-Month Progress

October 2024

Focus: SwiftUI Fundamentals, State Management & Data Persistence

Date Project Key Achievement
Oct 4 My First App First SwiftUI app with custom layouts
Oct 4 War Card Game Implemented game logic and state management
Oct 9 BMI Calculator Advanced state management, custom components, animations
Oct 10 To-Do List Data persistence with UserDefaults, List management

Skills This Month:

  • SwiftUI layout system
  • State management (@State, @Binding)
  • Custom components
  • Animations
  • Input validation
  • Data modeling
  • UserDefaults persistence
  • JSON encoding/decoding
  • List and ForEach
  • Gesture handling

🛠️ Development Setup

Requirements

  • macOS: 13.0 Ventura or later
  • Xcode: 15.0 or later
  • iOS Deployment Target: iOS 17.0+
  • Swift Version: 5.9

Getting Started

  1. Clone this repository

    git clone https://github.com/DebugWithAryan/IOS-AppDevelopment.git
    cd IOS-AppDevelopment
  2. Open a project

    cd "To-Do List"
    open *.xcodeproj
  3. Run in Simulator or Device

    • Select your target device (iPhone 15 recommended)
    • Press ⌘ + R or click the Play button
    • Explore and experiment!

📋 Upcoming Projects

  • Weather App - API integration and JSON parsing
  • Quiz App - Multiple choice questions with scoring
  • Expense Tracker - Financial management app
  • Recipe Book - Browse and save recipes
  • Habit Tracker - Daily habit monitoring
  • Notes App - Rich text editing with Core Data

🐛 Known Issues

Currently no known issues! All apps are functional and tested.

🏆 Achievements Unlocked

  • 🎉 Built first iOS app
  • 🎮 Created first game with logic
  • 🏗️ Developed first utility app
  • 📱 Mastered SwiftUI basics
  • 🎨 Implemented custom UI components
  • ⚡ Added animations and transitions
  • ✅ Implemented input validation
  • 💾 Achieved data persistence with UserDefaults
  • 📝 Built complete CRUD functionality
  • 🔄 Mastered List management

🤝 Contributing

While this is a personal learning repository, I'm open to:

  • 💡 Suggestions for improvement
  • 🐛 Bug reports
  • 📚 Learning resources recommendations
  • 🤝 Collaboration on practice projects

Feel free to open an issue or reach out!

📞 Connect With Me

💭 Reflections

What I've Learned

Each project has taught me something valuable:

  • My First App showed me how intuitive SwiftUI's declarative syntax is
  • War Card Game taught me how state management makes apps interactive
  • BMI Calculator demonstrated the power of component reusability and data modeling
  • To-Do List revealed the importance of data persistence and practical app architecture

Challenges Overcome

  • Understanding the difference between @State and @Binding
  • Debugging layout issues with nested stacks
  • Implementing proper input validation
  • Managing optional values safely
  • Working with JSON encoding/decoding
  • Implementing swipe-to-delete functionality
  • Managing app lifecycle and data persistence

What's Next

I'm excited to dive into networking and API integration! Building a Weather App will teach me how to fetch real-world data and handle asynchronous operations. After that, I'll explore Core Data for more complex data management and eventually move toward MVVM architecture.

📄 License

This project is licensed under the MIT License - feel free to use any code for your own learning!

🙏 Acknowledgments

  • Paul Hudson (Hacking with Swift) - Amazing tutorials
  • Apple Developer Documentation - Comprehensive guides
  • iOS Development Community - Endless support and inspiration
  • Stack Overflow - Helping me debug those tricky issues!

⭐ Star this repo if you're also learning iOS development!

Let's learn together!

Last Updated: October 10, 2024

Made with ❤️ and lots of ☕ by Aryan Jaiswal

"The journey of a thousand apps begins with a single View." 🚀

About

I am starting my IOS Development Career

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages