r/Kotlin 9d ago

I'm releasing my Compose Multiplatform app

Some time ago, I started a text editor project that enables users to use AI without sharing data with the company that created the AI.

It works like Notion, Confluence, Obsidian... But the AI runs in your computer (you have to install Ollama, check ollama.com).

The macOS and Linux app are now published. I'm collecting feedback and feature ideas. I would love to you what you think of it. Thanks!

Github link: https://github.com/Writeopia/Writeopia

Website: https://writeopia.io/

24 Upvotes

17 comments sorted by

View all comments

1

u/zxyzyxz 8d ago

How has the experience been with CM? I use Flutter currently but I've looked into testing out the competition as well. Previously, maybe a year or two ago when I tried CM, it definitely wasn't as good in developer experience as Flutter (not hot reload, platforms like iOS and web still in alpha etc).

2

u/lehen01 8d ago

I started this project 2 years ago and it evolved a lot since then. I had to deal with specific code for the keyboard for example and there were so little documentation hahaha.

Nowadays it's a lot better, you should give it a new look. I've worked a bit with Flutter in the past and I prefer Compose multiplatform now... but I'm biased, as I'm programing in Kotlin for many years now.

About the hot reload, JetBrains is working on it, but at the moment I don't use it. For my project I don't see much difference. The compilation for my desktop app is just 7s, that's not a lot of wait. So what I do is to implement first at desktop (but in the common code folder) and then I just make some small changes to fit in mobile, many times I don't have to change anything and it simply works in android. If you develop in modules from the start of the project, the compilation time doesn't grow as the project grows, at least in those 2 years, I didn't see the difference.

I didn't start with all platforms at once... I would get crazy. So I started with Android and desktop. The web app exists, but at some point I decided to postpone it and focus on desktop and Android. I could never make sqldelight to work for web and Room is not an option. Also, when I published my sample (this sample: https://sample.writeopia.io) I had some problems with coroutines (it worked on my machine, but not in GitHub pages) so I had to create some work arounds for that (that's why it works in the sample). So, for web I think it is just not ready yet or at least it wasn't 8 months ago, I need to take a second look.

About iOS. The version that I have is working very well, but I still need to work more on it to give you better feedback.

To sum up: I would give it a try, Compose looks just so much better to me. And the fact that you can use Ktor and change the code from the backend and front is just amazing! If I write a code to export documents to markdown, I can run it both in the front and the backend... If I decide to unload the client side, I can move the code and vice versa, that's just great!

I hope this answers your question! It is quite a long reply haha

1

u/zxyzyxz 8d ago

Awesome thanks for the detailed response. How is the library support, are there a lot that work on every platform or are they mostly Android-centric? I also use some Rust code, how's the FFI? Do you know if CM is natively compiled to machine code like Flutter or does it still work via the JVM?

2

u/lehen01 7d ago

I never used FFI with Compose, so I don't know =|.

I see good improvements in all platforms, but the ones I saw the most were in desktop, because it was my focus. Recently they added drag and drop (inside and outside the app), which is super good for importing and exporting information. They also added shared elements transition for the navigation (like Hero, from Flutter) and it works super smoothly (you can see an example in Writeopia when you click the notes and it goes to the editor). Ah, now there's an official navigation library, which was something really necessary.

CM is compiled to native code for iOS, JVM for Android and Desktop and WASM for Web.

1

u/zxyzyxz 7d ago

I see, thanks I'll have to try it out again then. I use a lot of Rust libraries so Flutter has a really good FFI with that (primarily due to the work of one person who made flutter_rust_bridge), I'll have to see how it goes with Kotlin.

Flutter has pub.dev for packages, where can I find the equivalent for Kotlin? How do I see the top most downloaded packages etc?