-
Notifications
You must be signed in to change notification settings - Fork 0
Project Description
The project is two parts: an Android app and a Node.JS desktop application. The underlying goal of the project is have phone notifications be forwarded and displayed as a native notification on the user's computer (through the computer's notification system). In addition to receiving and interacting with notifications, users will also be able to send text-snippets, photos and files to and from their two devices.
Additionally, a goal is to make sure all aspects of the project are "independent" of us, the creators. That is any one can download, compile, and use our applications without any approval, good wishes, or an unknown blackbox backend infrastructure.
Similar projects: KDE Connect, Microsoft's Your Phone Phone Link and Pushbullet
The client side is an Android app written in Koltin using Android Studio and would send notifications, receive notification interactions (notification clicked, text typed, etc), in addition to sending/receiving text-snippets, photos and files. The client app will communicate with the server application via the network (whether via an internal IP or via an external URL). All data transmitted via the network will be encrypted using AES256 (or possibly RSA with server generated certificates) and have either a pre-shared key entered by the user or use a secure key exchange method (such as the Diffie–Hellman key exchange). Android 12 allows for users to limit the type of notifications an app could see, giving a variety of notifications per user.
The server side is a Node.JS application that runs on the user's computer. We selected Node.JS for it's portability, ease-of-use, quick setup, and there was a good multi-platform notification library (saving us from that pain). The desktop app would receive notification data from the client app and create a native notification on the user's computer. Users can interact with notifications as they would for any other notification (click it, push buttons, type text, see images, etc). Server side configuration can be done via a web-interface (page), config file, or direct interaction with the command prompt (if application is not running in service mode).
As same with the client app, all data transmitted via the network will be encrypted and have either a pre-shared key entered by the user or use a secure key exchange method.