Hi everyone! I've been working on a qml Whatsapp client for Ubuntu Touch for a few weeks, now I think its good enough for its alpha release.
The app is not complete, there's still a ton of work to do, and probably many bugs. If you want to test it out, feel free to install in your device, and get back here if you find any bug so I can look at it. The Whatsapp protocol is awful to work with, I'm posting this early to gather feedback about edge cases.
Consider this app as Alpha, don't use it expecting to be 100% functional or complete, but use it to give feedback and help with the development.
Also the app runs unconfined to setup a background daemon, more on the architecture bellow.
Releases here: https://github.com/brennoflavio/greenline/releases
Once its stable, I'll publish to the store. Now more details about it.
Architecture
This app is composed of 3 parts:
Golang Daemon
This daemon managed by Systemd connects to Whatsapp servers and runs continuously in the background, gathering events and pre processing them. Also:
Manages your encryption keys
Serialize whatsapp events, stores in a queue
Expose a JSON RPC endpoint to read and send messages, among other operations
Syncs users avatars, media, and other data
Sends notifications
Python Backend
Event driven backend that pulls events from the daemon and acts on them, building a chat room and message database. It also sends events to the frontend, updating the message list in real time
QML
The frontend is entirely written in qml and communicates with python using pyotherside
In order to pull messages in the background, it needs to run unconfined.