Improve ITD project page

This commit is contained in:
Elara 2023-02-12 14:14:29 -08:00
parent 38ea7dff1d
commit 4b211e0708

View File

@ -5,16 +5,14 @@ summary = "Linux companion daemon for the PineTime smartwatch"
weight = 30 weight = 30
+++ +++
[ITD](https://gitea.arsenm.dev/Arsen6331/itd) (short for [InfiniTime](https://github.com/InfiniTimeOrg/InfiniTime) Daemon) is my biggest and most-used project so far. It is a companion daemon that runs on Linux for the PineTime smartwatch. This means it the same thing as the Watch app on iOS, but on Linux instead of iOS and for the PineTime instead of the Apple Watch. # ITD - InfiniTime Daemon
It runs in the background, managing Bluetooth communication with the watch. When it starts, it exposes a UNIX socket where it accepts API requests from the frontends I've built. I have a CLI frontend called `itctl` and a GUI frontend called `itgui`. [ITD](https://gitea.arsenm.dev/Arsen6331/itd), short for InfiniTime Daemon, is one of my biggest and most-used projects. It's a companion daemon for the PineTime smartwatch on Linux, functioning similarly to the Watch app on iOS, but on Linux and for the PineTime instead of the Apple Watch.
ITD implements all features exposed by the InfiniTime firmware, and even some that are not out yet or have no frontend on the watch. The only feature not implemented is navigation, which I skipped because there is no standard for it on Linux. The daemon runs in the background and manages Bluetooth communication with the watch. Upon startup, it exposes a UNIX socket to accept API requests from the frontends, including `itctl` (a CLI frontend) and `itgui` (a GUI frontend).
I've worked with developers of the InfiniTime firmware to design and add new features to the firmware, and to ITD. Developers of the firmware have also used ITD to test new features they were implementing. ITD implements all features exposed by the InfiniTime firmware, including some not yet available or without frontends on the watch.
My companion is mentioned in many places, including the InfiniTime README, Pine64's wiki pages for PineTime, and several blog posts from Pine64 (the manufacturer of the PineTime). I've collaborated with InfiniTime firmware developers to design and add new features to both the firmware and ITD, and they've also used ITD to test new features they were implementing. ITD is mentioned in various places, such as the InfiniTime README, Pine64's wiki pages for PineTime, and blog posts from Pine64 (the manufacturer of the PineTime).
Recently, thanks to the amazing [GoReleaser](https://github.com/goreleaser/goreleaser), I have begun releasing Linux packages such as `.deb`, `.rpm`, and `.apk` (Alpine Linux, not Android) automatically whenever a new release is created. This project showcases a lot of my knowledge, utilizing SQLite for storing metrics (e.g., step count, heart rate), Bluetooth Low-Energy for communication with the watch, DBus for communication with the Bluetooth daemon and various other system components, UNIX sockets for Inter-Process Communication between frontends and the daemon, and several REST APIs to get information such as weather and location.
This project combines a lot of my knowledge into a single project. It uses SQLite to store metrics such as step count, heart rate, etc., it uses Bluetooth Low-Energy to communicate with the watch, DBus to communicate with the Bluetooth daemon, UNIX sockets for Inter-Process Communication between the frontends and the daemon, it even uses a custom RPC library I built specifically for it.