You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+63-27Lines changed: 63 additions & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@
9
9
10
10
The coverage report excludes code not intended to be covered.
11
11
12
-
This avoids the [“broken window” effect](https://blog.codinghorror.com/the-broken-window-theory/): whether coverage is at 43% or 56%, it’s perceived as equally low—so efforts to improve it are often dismissed. In contrast, high or near-100% coverage is seen as achievable and worth tracking.
12
+
This avoids the [“broken window” effect](https://blog.codinghorror.com/the-broken-window-theory/): whether coverage is at 43% or 56%, it's perceived as equally low—so efforts to improve it are often dismissed. In contrast, high or near-100% coverage is seen as achievable and worth tracking.
13
13
14
14
Refer to the root project's [`build.gradle.kts`](build.gradle.kts#L55-L90) for details.
15
15
@@ -36,9 +36,10 @@ Refer to the root project's [`build.gradle.kts`](build.gradle.kts#L55-L90) for d
36
36
37
37
[**Taskfolio**](https://opatry.github.io/taskfolio) is an Android task management app built using [Google Tasks API](https://developers.google.com/tasks/reference/rest). Developed to demonstrate my expertise in modern Android development, it highlights my skills in architecture, UI design with Jetpack Compose, OAuth authentication, and more—all packaged in a sleek, user-friendly interface.
38
38
39
-
> [!INFO] The application is also available as a desktop (Jvm) application and an iOS application as well (using [Compose Multi Platform (aka CMP)](https://www.jetbrains.com/compose-multiplatform/) as UI Toolkit).
39
+
> [!NOTE]
40
+
> The application is also available as a desktop (Jvm) application and an iOS application as well (using [Compose Multi Platform (aka CMP)](https://www.jetbrains.com/compose-multiplatform/) as UI Toolkit).
40
41
41
-
> I set out to revisit the classical TODO app, ‘local-first’ syncing with Google Tasks—aiming for an <abbrtitle="Minimum Viable Experience">MVE</abbr> in 2 weeks, focusing on the 80/20 rule to nail the essentials.
42
+
> I set out to revisit the classical TODO app, ‘local-first' syncing with Google Tasks—aiming for an <abbrtitle="Minimum Viable Experience">MVE</abbr> in 2 weeks, focusing on the 80/20 rule to nail the essentials.
@@ -78,8 +79,9 @@ I do not aim to implement advanced features beyond what is supported by the Goog
78
79
79
80
## 🛠️ Tech stack
80
81
81
-
-[Kotlin](https://kotlinlang.org/), [Multiplatform (aka KMP)](https://kotlinlang.org/docs/multiplatform.html) (currently Desktop & Android are supported)
82
-
- iOS wasn’t initially planned, but a draft version is available (use it at your own risks, bare minimum support is expected). It uses [Compose Multi Platform (aka CMP)](https://www.jetbrains.com/compose-multiplatform/).
Either commit (but what?) or explain how to debug with Add Group > Add folders `tasks-app-shared/{commonMain,iosMain}`.
152
-
cf. https://touchlab.co/xcodekotlin
153
-
154
137
## 🧑💻 Local development
155
138
156
139
<details>
@@ -187,6 +170,59 @@ When clicking on it, it will open a new window with the hot reload status.
187
170

188
171
</details>
189
172
173
+
## 🍎 Build for iOS target
174
+
175
+
The support of iOS works more or less _as-is_ and gets the job done. It's provided without guarantees, use at your own risk.
176
+
Feedback and contributions are welcome though 🤝.
177
+
178
+
<details>
179
+
<summary>See details…</summary>
180
+
181
+
> [!NOTE]
182
+
> iOS support is _opt-in_ and disabled by default to avoid unnecessary time and disk usage during the initial Gradle sync when the iOS target isn't required.
183
+
> You can enable it by setting `ios.target` Gradle property to `all`, `simulator` or `device` from either `local.properties` or CLI using `-P`.
184
+
> When building from Xcode, it automatically sets `-Pios.target=simulator` based on `Config.xcconfig`.
185
+
186
+
You can build the `:tasks-app-shared` code for iOS using Gradle (to check if evertyhing compiles on Kotlin side):
0 commit comments