Basic application setup (#1)

This PR contains the work done to define the necessary setup from which the app will be built upon.

To provide further details on what has been done:
* created the app, the unit tests and the UI tests targets in the Xcode project;
* updated the bundle identifiers and OS deployment targets of all targets;
* added a `.gitignore` file tailored specifically for the project;
* added a `README` file that defines in details the goal of the project;
* added the [Swift Format](https://github.com/swiftlang/swift-format) rules that the source code should abide to;
* cleaned the boilerplate source code on all targets.

Reviewed-on: rock-n-code/todos-app#1
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
This commit was merged in pull request #1.
This commit is contained in:
2026-02-08 20:20:11 +00:00
committed by javier
parent 1a178a6be6
commit e6e9afe7fa
13 changed files with 234 additions and 98 deletions
+68 -84
View File
@@ -3,9 +3,14 @@
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objectVersion = 90;
objects = {
/* Begin PBXBuildFile section */
0296B3232F3903E6001C3BDB /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 0296B3222F3903E6001C3BDB /* README.md */; };
0296B3272F390E1A001C3BDB /* .swift-format in Resources */ = {isa = PBXBuildFile; fileRef = 0296B3262F390E1A001C3BDB /* .swift-format */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
0296B3002F38F8F7001C3BDB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
@@ -27,22 +32,24 @@
0296B2F02F38F8F7001C3BDB /* Todos.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Todos.app; sourceTree = BUILT_PRODUCTS_DIR; };
0296B2FF2F38F8F7001C3BDB /* TodosTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TodosTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
0296B3092F38F8F7001C3BDB /* TodosUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TodosUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
0296B3222F3903E6001C3BDB /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
0296B3262F390E1A001C3BDB /* .swift-format */ = {isa = PBXFileReference; lastKnownFileType = text; path = ".swift-format"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
0296B2F22F38F8F7001C3BDB /* Todos */ = {
0296B2F22F38F8F7001C3BDB /* App */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = Todos;
path = App;
sourceTree = "<group>";
};
0296B3022F38F8F7001C3BDB /* TodosTests */ = {
0296B3022F38F8F7001C3BDB /* UnitTests */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = TodosTests;
path = UnitTests;
sourceTree = "<group>";
};
0296B30C2F38F8F7001C3BDB /* TodosUITests */ = {
0296B30C2F38F8F7001C3BDB /* UITests */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = TodosUITests;
path = UITests;
sourceTree = "<group>";
};
/* End PBXFileSystemSynchronizedRootGroup section */
@@ -50,24 +57,18 @@
/* Begin PBXFrameworksBuildPhase section */
0296B2ED2F38F8F7001C3BDB /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
0296B2FC2F38F8F7001C3BDB /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
0296B3062F38F8F7001C3BDB /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
@@ -75,9 +76,11 @@
0296B2E72F38F8F7001C3BDB = {
isa = PBXGroup;
children = (
0296B2F22F38F8F7001C3BDB /* Todos */,
0296B3022F38F8F7001C3BDB /* TodosTests */,
0296B30C2F38F8F7001C3BDB /* TodosUITests */,
0296B3262F390E1A001C3BDB /* .swift-format */,
0296B3222F3903E6001C3BDB /* README.md */,
0296B2F22F38F8F7001C3BDB /* App */,
0296B3022F38F8F7001C3BDB /* UnitTests */,
0296B30C2F38F8F7001C3BDB /* UITests */,
0296B2F12F38F8F7001C3BDB /* Products */,
);
sourceTree = "<group>";
@@ -105,14 +108,10 @@
);
buildRules = (
);
dependencies = (
);
fileSystemSynchronizedGroups = (
0296B2F22F38F8F7001C3BDB /* Todos */,
0296B2F22F38F8F7001C3BDB /* App */,
);
name = Todos;
packageProductDependencies = (
);
productName = Todos;
productReference = 0296B2F02F38F8F7001C3BDB /* Todos.app */;
productType = "com.apple.product-type.application";
@@ -131,11 +130,9 @@
0296B3012F38F8F7001C3BDB /* PBXTargetDependency */,
);
fileSystemSynchronizedGroups = (
0296B3022F38F8F7001C3BDB /* TodosTests */,
0296B3022F38F8F7001C3BDB /* UnitTests */,
);
name = TodosTests;
packageProductDependencies = (
);
productName = TodosTests;
productReference = 0296B2FF2F38F8F7001C3BDB /* TodosTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
@@ -154,11 +151,9 @@
0296B30B2F38F8F7001C3BDB /* PBXTargetDependency */,
);
fileSystemSynchronizedGroups = (
0296B30C2F38F8F7001C3BDB /* TodosUITests */,
0296B30C2F38F8F7001C3BDB /* UITests */,
);
name = TodosUITests;
packageProductDependencies = (
);
productName = TodosUITests;
productReference = 0296B3092F38F8F7001C3BDB /* TodosUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
@@ -172,6 +167,7 @@
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 2630;
LastUpgradeCheck = 2630;
ORGANIZATIONNAME = "Röck+Cöde VoF";
TargetAttributes = {
0296B2EF2F38F8F7001C3BDB = {
CreatedOnToolsVersion = 26.3;
@@ -195,7 +191,7 @@
);
mainGroup = 0296B2E72F38F8F7001C3BDB;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
preferredProjectObjectVersion = 90;
productRefGroup = 0296B2F12F38F8F7001C3BDB /* Products */;
projectDirPath = "";
projectRoot = "";
@@ -210,48 +206,38 @@
/* Begin PBXResourcesBuildPhase section */
0296B2EE2F38F8F7001C3BDB /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
0296B3232F3903E6001C3BDB /* README.md in Resources */,
0296B3272F390E1A001C3BDB /* .swift-format in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
0296B2FD2F38F8F7001C3BDB /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
0296B3072F38F8F7001C3BDB /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
0296B2EC2F38F8F7001C3BDB /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
0296B2FB2F38F8F7001C3BDB /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
0296B3052F38F8F7001C3BDB /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
@@ -269,7 +255,7 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
0296B3112F38F8F7001C3BDB /* Debug */ = {
0296B3112F38F8F7001C3BDB /* Debug configuration for PBXProject "Todos" */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
@@ -331,7 +317,7 @@
};
name = Debug;
};
0296B3122F38F8F7001C3BDB /* Release */ = {
0296B3122F38F8F7001C3BDB /* Release configuration for PBXProject "Todos" */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
@@ -385,7 +371,7 @@
};
name = Release;
};
0296B3142F38F8F7001C3BDB /* Debug */ = {
0296B3142F38F8F7001C3BDB /* Debug configuration for PBXNativeTarget "Todos" */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
@@ -398,6 +384,7 @@
ENABLE_PREVIEWS = YES;
ENABLE_USER_SELECTED_FILES = readonly;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
@@ -408,12 +395,12 @@
"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 26.2;
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 26.2;
MACOSX_DEPLOYMENT_TARGET = 26.0;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.app.Todos";
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.todos.app";
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = YES;
SDKROOT = auto;
@@ -425,11 +412,11 @@
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,7";
XROS_DEPLOYMENT_TARGET = 26.2;
XROS_DEPLOYMENT_TARGET = 26.0;
};
name = Debug;
};
0296B3152F38F8F7001C3BDB /* Release */ = {
0296B3152F38F8F7001C3BDB /* Release configuration for PBXNativeTarget "Todos" */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
@@ -442,6 +429,7 @@
ENABLE_PREVIEWS = YES;
ENABLE_USER_SELECTED_FILES = readonly;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
@@ -452,12 +440,12 @@
"INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 26.2;
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 26.2;
MACOSX_DEPLOYMENT_TARGET = 26.0;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.app.Todos";
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.todos.app";
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = YES;
SDKROOT = auto;
@@ -469,11 +457,11 @@
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,7";
XROS_DEPLOYMENT_TARGET = 26.2;
XROS_DEPLOYMENT_TARGET = 26.0;
};
name = Release;
};
0296B3172F38F8F7001C3BDB /* Debug */ = {
0296B3172F38F8F7001C3BDB /* Debug configuration for PBXNativeTarget "TodosTests" */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
@@ -481,10 +469,10 @@
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 7FMNM89WKG;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 26.2;
MACOSX_DEPLOYMENT_TARGET = 26.2;
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
MACOSX_DEPLOYMENT_TARGET = 26.0;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.app.TodosTests";
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.todos.app.unit-tests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = auto;
STRING_CATALOG_GENERATE_SYMBOLS = NO;
@@ -495,11 +483,11 @@
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,7";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Todos.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Todos";
XROS_DEPLOYMENT_TARGET = 26.2;
XROS_DEPLOYMENT_TARGET = 26.0;
};
name = Debug;
};
0296B3182F38F8F7001C3BDB /* Release */ = {
0296B3182F38F8F7001C3BDB /* Release configuration for PBXNativeTarget "TodosTests" */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
@@ -507,10 +495,10 @@
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 7FMNM89WKG;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 26.2;
MACOSX_DEPLOYMENT_TARGET = 26.2;
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
MACOSX_DEPLOYMENT_TARGET = 26.0;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.app.TodosTests";
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.todos.app.unit-tests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = auto;
STRING_CATALOG_GENERATE_SYMBOLS = NO;
@@ -521,21 +509,21 @@
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,7";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Todos.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Todos";
XROS_DEPLOYMENT_TARGET = 26.2;
XROS_DEPLOYMENT_TARGET = 26.0;
};
name = Release;
};
0296B31A2F38F8F7001C3BDB /* Debug */ = {
0296B31A2F38F8F7001C3BDB /* Debug configuration for PBXNativeTarget "TodosUITests" */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 7FMNM89WKG;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 26.2;
MACOSX_DEPLOYMENT_TARGET = 26.2;
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
MACOSX_DEPLOYMENT_TARGET = 26.0;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.app.TodosUITests";
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.todos.app.ui-tests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = auto;
STRING_CATALOG_GENERATE_SYMBOLS = NO;
@@ -546,21 +534,21 @@
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,7";
TEST_TARGET_NAME = Todos;
XROS_DEPLOYMENT_TARGET = 26.2;
XROS_DEPLOYMENT_TARGET = 26.0;
};
name = Debug;
};
0296B31B2F38F8F7001C3BDB /* Release */ = {
0296B31B2F38F8F7001C3BDB /* Release configuration for PBXNativeTarget "TodosUITests" */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 7FMNM89WKG;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 26.2;
MACOSX_DEPLOYMENT_TARGET = 26.2;
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
MACOSX_DEPLOYMENT_TARGET = 26.0;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.app.TodosUITests";
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.todos.app.ui-tests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = auto;
STRING_CATALOG_GENERATE_SYMBOLS = NO;
@@ -571,7 +559,7 @@
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,7";
TEST_TARGET_NAME = Todos;
XROS_DEPLOYMENT_TARGET = 26.2;
XROS_DEPLOYMENT_TARGET = 26.0;
};
name = Release;
};
@@ -581,37 +569,33 @@
0296B2EB2F38F8F7001C3BDB /* Build configuration list for PBXProject "Todos" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0296B3112F38F8F7001C3BDB /* Debug */,
0296B3122F38F8F7001C3BDB /* Release */,
0296B3112F38F8F7001C3BDB /* Debug configuration for PBXProject "Todos" */,
0296B3122F38F8F7001C3BDB /* Release configuration for PBXProject "Todos" */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
0296B3132F38F8F7001C3BDB /* Build configuration list for PBXNativeTarget "Todos" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0296B3142F38F8F7001C3BDB /* Debug */,
0296B3152F38F8F7001C3BDB /* Release */,
0296B3142F38F8F7001C3BDB /* Debug configuration for PBXNativeTarget "Todos" */,
0296B3152F38F8F7001C3BDB /* Release configuration for PBXNativeTarget "Todos" */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
0296B3162F38F8F7001C3BDB /* Build configuration list for PBXNativeTarget "TodosTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0296B3172F38F8F7001C3BDB /* Debug */,
0296B3182F38F8F7001C3BDB /* Release */,
0296B3172F38F8F7001C3BDB /* Debug configuration for PBXNativeTarget "TodosTests" */,
0296B3182F38F8F7001C3BDB /* Release configuration for PBXNativeTarget "TodosTests" */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
0296B3192F38F8F7001C3BDB /* Build configuration list for PBXNativeTarget "TodosUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0296B31A2F38F8F7001C3BDB /* Debug */,
0296B31B2F38F8F7001C3BDB /* Release */,
0296B31A2F38F8F7001C3BDB /* Debug configuration for PBXNativeTarget "TodosUITests" */,
0296B31B2F38F8F7001C3BDB /* Release configuration for PBXNativeTarget "TodosUITests" */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */