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
+64-4Lines changed: 64 additions & 4 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,13 +36,16 @@ 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
-
> 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.
39
+
> 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.
[](https://play.google.com/store/apps/details?id=net.opatry.tasks.app)
45
45
46
+
> [!NOTE]
47
+
> 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).
48
+
46
49
## 🎯 Project intentions
47
50
48
51
-[x] Showcase my expertise in Android application development
@@ -76,8 +79,9 @@ I do not aim to implement advanced features beyond what is supported by the Goog
76
79
77
80
## 🛠️ Tech stack
78
81
79
-
-[Kotlin](https://kotlinlang.org/), [Multiplatform (aka KMP)](https://kotlinlang.org/docs/multiplatform.html) (currently Desktop & Android are supported)
80
-
- iOS wasn’t initially planned, but I bootstrapped a [PR to evaluate the feasibility of the iOS target]((https://github.com/opatry/taskfolio/pull/269)). It turned out to be quite achievable and just needs some polishing.
- The [static site](https://opatry.github.io/taskfolio/) presenting the project
128
135
- Made with [Jekyll](https://jekyllrb.com/) and served by [Github pages](https://pages.github.com/)
@@ -177,6 +184,59 @@ When clicking on it, it will open a new window with the hot reload status.
177
184

178
185
</details>
179
186
187
+
## 🍎 Build for iOS target
188
+
189
+
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.
190
+
Feedback and contributions are welcome though 🤝.
191
+
192
+
> [!NOTE]
193
+
> 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.
194
+
> You can enable it by setting `ios.target` Gradle property to `all`, `simulator` or `device` from either `local.properties` or CLI using `-P`.
195
+
> When building from Xcode, it automatically sets `-Pios.target=simulator` based on `Config.xcconfig`.
196
+
197
+
<details>
198
+
<summary>See details…</summary>
199
+
200
+
You can build the `:tasks-app-shared` code for iOS using Gradle (to check if evertyhing compiles on Kotlin side):
0 commit comments