Created a README file for the project.

This commit is contained in:
2026-02-08 19:07:31 +01:00
parent 87660a8404
commit 8b6ec177af
2 changed files with 23 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
# TODOS
A simple, small but complete todo app created for a technical interview with [Bol](https://www.bol.com), built using [SwiftUI](https://developer.apple.com/swiftui/).
In a nutshell, this basic app should allow a user to either create, update, and/or delete tasks; as well as being able to mark tasks as completed.
Given the requirements, the app should comply to the following criteria:
* each task should have a title, optional description, due date, and a flag indicating if it’s completed.
* tasks should be grouped visually by their due date, such as Today, Upcoming, or Past.
* users should also be able to reorder tasks within a group using drag and drop functionality.
* data should be saved and loaded asynchronously, and the UI should remain responsive while these operations take place.
* should be possible to simulate delays with built-in tools if needed.
Furthermore, the app is required to be built using SwiftUI with a clear structure that separates concerns. Any architectural style can be used, but the reasoning should be visible in how the code is organized.
It is expected that the app is modular and maintainable, so the source code must reflects this requirement. It is optional to include testable parts and anything extra that might improve the app.
+7
View File
@@ -6,6 +6,10 @@
objectVersion = 90; objectVersion = 90;
objects = { objects = {
/* Begin PBXBuildFile section */
0296B3232F3903E6001C3BDB /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 0296B3222F3903E6001C3BDB /* README.md */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
0296B3002F38F8F7001C3BDB /* PBXContainerItemProxy */ = { 0296B3002F38F8F7001C3BDB /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
@@ -27,6 +31,7 @@
0296B2F02F38F8F7001C3BDB /* Todos.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Todos.app; sourceTree = BUILT_PRODUCTS_DIR; }; 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; }; 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; }; 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>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFileSystemSynchronizedRootGroup section */
@@ -69,6 +74,7 @@
0296B2E72F38F8F7001C3BDB = { 0296B2E72F38F8F7001C3BDB = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
0296B3222F3903E6001C3BDB /* README.md */,
0296B2F22F38F8F7001C3BDB /* App */, 0296B2F22F38F8F7001C3BDB /* App */,
0296B3022F38F8F7001C3BDB /* UnitTests */, 0296B3022F38F8F7001C3BDB /* UnitTests */,
0296B30C2F38F8F7001C3BDB /* UITests */, 0296B30C2F38F8F7001C3BDB /* UITests */,
@@ -198,6 +204,7 @@
0296B2EE2F38F8F7001C3BDB /* Resources */ = { 0296B2EE2F38F8F7001C3BDB /* Resources */ = {
isa = PBXResourcesBuildPhase; isa = PBXResourcesBuildPhase;
files = ( files = (
0296B3232F3903E6001C3BDB /* README.md in Resources */,
); );
}; };
0296B2FD2F38F8F7001C3BDB /* Resources */ = { 0296B2FD2F38F8F7001C3BDB /* Resources */ = {