Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

109 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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.

Configuration

Configuration is via env variables:

APP_KIGO_PUBSUBURL - Nats Url, default: nats://127.0.0.1:4222 APP_KIGO_NAME - KiGo pub sub topic, default: KiGo APP_KIGO_KIGOUI - KiGoUI pub sub topic, default: KiGoUI APP_KIGO_DATABASE - SQlite database name, default: kigo.db APP_KIGO_PORT - KiGo REST API port, default: 10001 APP_KIGO_PING - KiGo REST ping endpoint, default: false

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

Phase 4 Implement helper tool

  • 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 X
Calendar
Mail
Weather
Notifications

About

Smart Mirror in Go

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages