Kigo
A smart mirror implemented in Go, where modules communicate using pubsub architecture.
There are 2 fix processes, KiGoUI and KiGo. The KiGoUI is responsible for handling the screen(s) and drawing. KiGo is responsible to have the logic responsible to handle/manage modules and failures. Modules are third party processes with logic about what to be shown on the screens. A manager KiGoMa is responsible for downloading third party modules from any repository (Schema needs to be implemented) handling integration via REST api.
Modules can be run everywhere you want, KiGoUI and KiGo (for now) are running on the device connected to the screen. The modules can be run on the same device or at a remote devices. This gives us the benefit of expanding heavy loads, i.e. ML/AI/SMLs (your choice). For a distributed architecture some changes would need to me made. KiGo will have a REST API which is currently (only ping and metrics) unfineshed and should integrate KiGoMa.
The scope of KigoMa would be to download and manage modules.
I will use GoGPU as soon at is available for the KiGoUI. Nats for pubsub and my on lib sca-instruments for util and intrumentation, future REST API for external actors. Shared memory for drawing/sharing
KiGoCore has the current definition of the inter process messages.
Architecture

KiGo is responsible for handling the module lifecycle and KiGoUI for rendering what the modules want to draw. For more informations about the module lifecycle checkout
KiGoCore.
Roadmap
Phase 0 - Planing Phase
- Define architecture
- Define communication shema via pubsub
- Define communication via IPC
Phase 1 Implement communication foundation
- Implement communication between KiGoUI and KiGo
- Implement communication between KiGo and modules via pubsub
Phase 2 Implement modules showcase
- Implement modules render roundtrip
- Implement basic modules
Phase 3 Implement shipping strategy
- Implement deployment architecture, including KiGo, KiGoUI and the pubsub server
- Implement basic modules
- Implement KiGoMa on device
Phase 5 Implement full third party solutions
- Implement KigoMa on remote
- Implement remote modules
Phase 6 Implement cloud native
- Implement NATS alternative in cloud environment
A list of modules implemented from this list:
| Module |
Implemented |
| Text |
X |
| Time |
|
| Calendar |
|
| Mail |
|
| Weather |
|
| Notifications |
|