diff --git a/CloudMaster.xcodeproj/project.pbxproj b/CloudMaster.xcodeproj/project.pbxproj index 5d87272..3f41eae 100644 --- a/CloudMaster.xcodeproj/project.pbxproj +++ b/CloudMaster.xcodeproj/project.pbxproj @@ -219,13 +219,6 @@ path = Common; sourceTree = ""; }; - 8D8D8AA32C05A27800ACC61C /* ViewModels */ = { - isa = PBXGroup; - children = ( - ); - path = ViewModels; - sourceTree = ""; - }; 8D8D8AA52C05A27800ACC61C /* Views */ = { isa = PBXGroup; children = ( @@ -238,7 +231,6 @@ 8D8D8AA62C05A27800ACC61C /* Course */ = { isa = PBXGroup; children = ( - 8D8D8AA32C05A27800ACC61C /* ViewModels */, 8D8D8AA52C05A27800ACC61C /* Views */, ); path = Course; @@ -268,13 +260,6 @@ path = Models; sourceTree = ""; }; - 8D8D8AAC2C05A27800ACC61C /* ViewModels */ = { - isa = PBXGroup; - children = ( - ); - path = ViewModels; - sourceTree = ""; - }; 8D8D8AB22C05A27800ACC61C /* Views */ = { isa = PBXGroup; children = ( @@ -290,7 +275,6 @@ isa = PBXGroup; children = ( 8D8D8AAB2C05A27800ACC61C /* Models */, - 8D8D8AAC2C05A27800ACC61C /* ViewModels */, 8D8D8AB22C05A27800ACC61C /* Views */, ); path = Exam; @@ -791,10 +775,13 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.6; + MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = com.ditectrev.cloudmasterswift; PRODUCT_NAME = "CloudMaster Swift"; PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -827,10 +814,13 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.6; + MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = com.ditectrev.cloudmasterswift; PRODUCT_NAME = "CloudMaster Swift"; PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_VERSION = 5.0; diff --git a/CloudMaster.xcodeproj/project.xcworkspace/xcuserdata/benediktwagner.xcuserdatad/WorkspaceSettings.xcsettings b/CloudMaster.xcodeproj/project.xcworkspace/xcuserdata/benediktwagner.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..bbfef02 --- /dev/null +++ b/CloudMaster.xcodeproj/project.xcworkspace/xcuserdata/benediktwagner.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,14 @@ + + + + + BuildLocationStyle + UseAppPreferences + CustomBuildLocationType + RelativeToDerivedData + DerivedDataLocationStyle + Default + ShowSharedSchemesAutomaticallyEnabled + + + diff --git a/CloudMaster/Assets.xcassets/Image.imageset/Contents.json b/CloudMaster/Assets.xcassets/Image.imageset/Contents.json deleted file mode 100644 index a19a549..0000000 --- a/CloudMaster/Assets.xcassets/Image.imageset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/CloudMaster/Assets.xcassets/scrumIcon.symbolset/Contents.json b/CloudMaster/Assets.xcassets/scrumIcon.symbolset/Contents.json new file mode 100644 index 0000000..e2569af --- /dev/null +++ b/CloudMaster/Assets.xcassets/scrumIcon.symbolset/Contents.json @@ -0,0 +1,12 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "symbols" : [ + { + "filename" : "scrum.svg", + "idiom" : "universal" + } + ] +} diff --git a/CloudMaster/Assets.xcassets/scrumIcon.symbolset/scrum.svg b/CloudMaster/Assets.xcassets/scrumIcon.symbolset/scrum.svg new file mode 100644 index 0000000..7c18d59 --- /dev/null +++ b/CloudMaster/Assets.xcassets/scrumIcon.symbolset/scrum.svg @@ -0,0 +1,103 @@ + + + + + + + + + + Weight/Scale Variations + Ultralight + Thin + Light + Regular + Medium + Semibold + Bold + Heavy + Black + + + + + + + + + + + Design Variations + Symbols are supported in up to nine weights and three scales. + For optimal layout with text and other symbols, vertically align + symbols with the adjacent text. + + + + + + Margins + Leading and trailing margins on the left and right side of each symbol + can be adjusted by modifying the x-location of the margin guidelines. + Modifications are automatically applied proportionally to all + scales and weights. + + + + Exporting + Symbols should be outlined when exporting to ensure the + design is preserved when submitting to Xcode. + Template v.6.0 + Requires Xcode 16 or greater + Generated from scrum + Typeset at 100.0 points + Small + Medium + Large + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CloudMaster/Constants/Courses.swift b/CloudMaster/Constants/Courses.swift index fc5c037..0a4ee7e 100644 --- a/CloudMaster/Constants/Courses.swift +++ b/CloudMaster/Constants/Courses.swift @@ -4,6 +4,7 @@ enum CourseCompany: String, Codable, Hashable, CaseIterable { case aws = "Amazon Web Services" case azure = "Microsoft Azure" case gcp = "Google Cloud Platform" + case scrum = "Scrum Alliance" case other = "Others" } @@ -204,6 +205,24 @@ extension Course { ), lastUpdate: nil ), + Course( + fullName: "Certified SysOps-Administrator Associate", + shortName: "SOA-C02", + description: + "Focuses on deploying, managing, and operating scalable, highly available, and secure systems on AWS with an emphasis on monitoring, automation, and performance optimization.", + company: .aws, + repositoryURL: + "https://github.com/Ditectrev/AWS-Certified-SysOps-Administrator-Associate-SOA-C02-Practice-Tests-Exams-Questions-Answers", + questionURL: + "https://raw.githubusercontent.com/Ditectrev/AWS-Certified-SysOps-Administrator-Associate-SOA-C02-Practice-Tests-Exams-Questions-Answers/refs/heads/main/README.md", + url: "https://aws.amazon.com/certification/certified-sysops-admin-associate/", + exam: Exam( + quick: ExamDetail(time: 40, questionCount: 20), + intermediate: ExamDetail(time: 84, questionCount: 49), + real: ExamDetail(time: 120, questionCount: 65) + ), + lastUpdate: nil + ), Course( fullName: "Azure Fundamentals", shortName: "AZ-900", @@ -429,12 +448,31 @@ extension Course { ), lastUpdate: nil ), + Course( + fullName: "Salesforce Certified Data Cloud Consultant", + shortName: "Salesforce-DC", + description: + "Focuses on implementing and configuring Salesforce Data Cloud solutions, including data ingestion, identity resolution, segmentation, activation, and compliance management.", + company: .other, + repositoryURL: + "https://github.com/Ditectrev/Salesforce-Certified-Data-Cloud-Consultant", + questionURL: + "https://raw.githubusercontent.com/Ditectrev/Salesforce-Certified-Data-Cloud-Consultant/refs/heads/main/README.md", + url: + "https://trailhead.salesforce.com/en/credentials/datacloudconsultant", + exam: Exam( + quick: ExamDetail(time: 40, questionCount: 20), + intermediate: ExamDetail(time: 84, questionCount: 42), + real: ExamDetail(time: 120, questionCount: 60) + ), + lastUpdate: nil + ), Course( fullName: "Scrum Developer I", shortName: "PSD-1", description: "Verifies a developer’s understanding of Scrum principles and their ability to work effectively within a Scrum team, focusing on collaborative and incremental software development practices.", - company: .other, + company: .scrum, repositoryURL: "https://github.com/Ditectrev/Professional-Scrum-Developer-I-PSD-I-Practice-Tests-Exams-Questions-Answers", questionURL: @@ -452,7 +490,7 @@ extension Course { shortName: "SM-1", description: "Demonstrates advanced proficiency in facilitating and leading Scrum teams, emphasizing the application of Scrum practices, principles, and techniques to maximize team productivity and efficiency.", - company: .other, + company: .scrum, repositoryURL: "https://github.com/Ditectrev/Professional-Scrum-Master-I-PSM-I-Practice-Tests-Exams-Questions-Answers", questionURL: @@ -470,7 +508,7 @@ extension Course { shortName: "SM-2", description: "Demonstrates advanced proficiency in facilitating and leading Scrum teams, emphasizing the application of Scrum practices, principles, and techniques to maximize team productivity and efficiency.", - company: .other, + company: .scrum, repositoryURL: "https://github.com/Ditectrev/Professional-Scrum-Master-II-PSM-II-Practice-Tests-Exams-Questions-Answers", questionURL: @@ -483,5 +521,23 @@ extension Course { ), lastUpdate: nil ), + Course( + fullName: "Scrum Product Owner I", + shortName: "PSPO-1", + description: + "Validates your knowledge of the Scrum framework, with a focus on the role of the Product Owner.", + company: .scrum, + repositoryURL: + "https://github.com/Ditectrev/Scrum-Product-Owner-PSPO-I-Practice-Tests-Exams-Questions-Answers", + questionURL: + "https://raw.githubusercontent.com/Ditectrev/Scrum-Product-Owner-PSPO-I-Practice-Tests-Exams-Questions-Answers/refs/heads/main/README.md", + url: "https://www.scrum.org/assessments/professional-scrum-product-owner-i-certification", + exam: Exam( + quick: ExamDetail(time: 40, questionCount: 20), + intermediate: ExamDetail(time: 84, questionCount: 42), + real: ExamDetail(time: 120, questionCount: 60) + ), + lastUpdate: nil + ), ] } diff --git a/CloudMaster/Features/Home/Views/HomeView.swift b/CloudMaster/Features/Home/Views/HomeView.swift index 080437e..e0fe1a2 100644 --- a/CloudMaster/Features/Home/Views/HomeView.swift +++ b/CloudMaster/Features/Home/Views/HomeView.swift @@ -126,6 +126,8 @@ struct StyledCourseRow: View { return "azureIcon" case .gcp: return "gcpIcon" + case .scrum: + return "scrumIcon" case .other: return "otherIcon" } @@ -141,6 +143,8 @@ struct StyledCourseRow: View { return LinearGradient(gradient: Gradient(colors: [color1, color2]), startPoint: .leading, endPoint: .trailing) case .gcp: return LinearGradient(gradient: Gradient(colors: [.red, .green, .yellow, .blue]), startPoint: .leading, endPoint: .trailing) + case .scrum: + return LinearGradient(gradient: Gradient(colors: [.blue, .teal, .teal]), startPoint: .leading, endPoint: .trailing) case .other: let color1 = Color.purple let color2 = Color.pink diff --git a/CloudMaster/Features/Training/Views/TrainingView.swift b/CloudMaster/Features/Training/Views/TrainingView.swift index d1377b5..cbc0138 100644 --- a/CloudMaster/Features/Training/Views/TrainingView.swift +++ b/CloudMaster/Features/Training/Views/TrainingView.swift @@ -58,6 +58,7 @@ struct TrainingView: View { .background(Color.customSecondary) .foregroundColor(.white) .cornerRadius(10) + .padding(.horizontal, 16) } } @@ -71,6 +72,7 @@ struct TrainingView: View { .background(Color.customPrimary) .foregroundColor(.white) .cornerRadius(10) + .padding(.horizontal, 16) } } else { Button(action: { @@ -82,6 +84,7 @@ struct TrainingView: View { .background(Color.customSecondary) .foregroundColor(.white) .cornerRadius(10) + .padding(.horizontal, 16) } } }