top | item 28365442

(no title)

vbsteven | 4 years ago

This is what I concluded as well. The end goal for my desired system is to make it straightforward to hook into events so I can add automation.

This turns out to be very hard to do based on CalDAV/WebDAV protocols because many clients and services implement the spec differently or only parts of it.

That's why I switched my approach and I'm writing my own backend storage layer that has my desired event system builtin on that layer (Using Kotlin/JVM for the backend, postgres for storage and MQTT for pub-sub to events). On top of that storage/api layer I'm building CalDAV/WebDAV support so external clients can connect to it.

Having my own HTTP+MQTT API makes it a lot easier to build modern clients as well. In fact because I chose Kotlin/JVM as my baseline and have already written a pure Kotlin client library I'm making a lot of progress on both desktop, android and cli tools to interact with the system.

discuss

order

scns|4 years ago

Nice, good choice IMSO. Kotlin Native Multiplatform Mobile would make an iOs app less porting work. Only the UI/Views would differ, ViewModels, http client and DB can be shared via Ktor and SQLDelight.

vbsteven|4 years ago

Currently I'm doing JVM only using Retrofit and Jackson instead of Ktor. Mostly because I know the JVM ecosystem best and supports all my target platforms. It's delightful to work in a big monorepo that shares API models all the way from the backend to the clients.

ByteWelder|4 years ago

Will it be open source? I'd consider helping with that. (Android/Kotlin dev with API/backend experience)

vbsteven|4 years ago

The backend and client libraries will be fully open source. That's the only way a self-hosted project like this can work.

I'm not sure about the android/desktop apps. I might keep them commercial for a bit to experiment with an open-core monetization strategy.

Give me a couple weeks to iron out architecture details and write some design docs and then I'll publish the project on GitHub. Shoot me an email if you're interested.