Wotrack
Workout tracker (SwiftUI + MVVM + CoreData + CloudKit).
Also used: Relationships, Multilingual, Drag and Drop reordered Grid.
Icons made by Ultimatearm from flaticon.com
CoreData + MVVM
MVVM makes work with CoreData clearer. You will find all the logic with detailed comments in the file: ViewModel/ExercisesViewModel.swift
Drag and Drop reordered Grid
Just use ReorderableForEach (Views/CustomViewsExtenssions/ReorderableForEach) and moveAction in LazyVGrid() to activate Drag and Drop reordered Grid:
  LazyVGrid(columns: columns, spacing: spacing) {
            ReorderableForEach(items: viewModel.items) { item in
                Text(item.title)
            } moveAction: { source, destination in
                move(sourceOffsets: source, destinationOffset: destination)
            }
  }
 
Add new parent-item with custom icon picker
ScrollView(.horizontal){
    HStack {
        ForEach(K.Icons.Default.iconSet, id: \.self) { icon in
            IconToChooseFromView(icon: icon)
                .onTapGesture {
                    iconValue = icon
                }
        }
    }
}
 
You can change the default icon set with your own in Constants.swift file
struct Icons {
    struct SystemSet {
        static let plus = "plus"
        static let trash = "trash"
    }
    struct Default {
        static let authorURL = "https://www.flaticon.com/authors/ultimatearm"
        static let authorCitation = "Icons made by Ultimatearm from www.flaticon.com"
        static let icon = "default"
        static let iconSet = []
   }
}
 
Core Data relationships
Relationships allows you to create child lists.
Switch language
I use just Eng/Rus, but you can add more. The user's choice is stored in userDefaults.




