-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap
The main goals of the v0.1.0 is to get the uncertainties out of the way, implement basic functionnalities and create the tools to help on this adventure
- a proof of concept for the Protoproxy as their is much incertainties about the feasibility of that one
- Core module to manage devices
- CLI to easily interac with the system via vash and scripts
- TUI to easiliy interac with the system via a fun user experience
- Go Device SDK to create basic devices
-
Create a poc of ProtoProxy which can listen Nats and push to db
- Need to create store library
- Create store server
- need to select db [questdb]
- need to deploy db [docker compose]
- Need to create the deserialize library to line protocol
- use unit test to validate
- Need to deploy NatsIO [docker compose]
- Need to create a NatsIO library
- Need to create to pipe the natsio telemetry to the db through protoproxy
- Deploy Questdb and connect
- Add metrics to protoproxy
- Add dashboard for protoproxy
- Add dashboard for natsio
- Add metrics endpoint for prometheus, nodeexporter, natsio, questdb
- Configure a grafana with questdb and prometheus data source
- Add dashboard to see telemetry
- Need to create store library
-
Core, register new device and basic management. The Core.
- Create a new device
- Update a device
- Delete a device
- List all devices with labels filter
- Get a device or a list of device with list of ids
- Setup unit test boilerplate
- Setup unit test for each functions
- Setup SurrealDB
- Setup NatsIO and request reply paradigm
- Add unit test with sub test and better handle db close
- Add search by annotations
- Add search by any json fields
- Add custom set of Mir errors for nice and consistent error handling
- Comment the protofile
- Added hearthbeat functionality
-
MirCLI, the Command Line Interface to easy interact with the system and with scripts
- Basic functionallity to manage devices
- Create a database seeding script for populating the db
- Add name field to device
-
MirTUI, the Terminal User Interface with bubble tea
- Learn BubbleTea
- Create the general parent layout
- Create basic components like tooltip and toast
- Create main page layout
- Create the list device layouts
- Create the create device page layout
- Create the edit device page layout
- Delete a device function
-
MirGoSdk, device sdk in Go
-
Create builder or Option patterns for sdk
-
Have Hearthbeat functionality implemented
-
Config and Logging setup
-
How do we publish a library? Pkg folder instead of sdks?
-
Design the event system
- How to publish new event
- How to catch those events
- ServerSide SDK
The main goals of this version is to create the Telemetry module as well as the visualiazing tools for the data
- ProtoFlux, handle telemetry data from protobuf to line protocol
- Upload schema via CLI
- Schema explorer via CLI and maybe TUI
- Create ProtoDash which can generate a dashboard from a proto file
- Create subscribe client in protoflux for cli and tui to see telemetry
- Custom Protobuff annotation for Mir System
- Added telemetry function to the SDK
- Add new set of events regarding telemetry
- Add stream subscriptions
- Integration test for the telemetry module
- Project layout refactor
- Decoupling of storage and server handlers
- rework how boiler template of app is made for services
- same tool for cli could be used for bootstrap of service
- change how init is used to become more main and have a run method
- Set config in a mir folder instead of per apps
- where is the line between using code and a spec? maybe enforcing a spec is sufficient instead of creating a maze of code abstraction for it -
- merge tui and cli into one binary
- Create tmuxifier layouts in repo
- Make command for buf generate
The main goal of this version is the create the Commanding module as well as the supporting tooling and visualization
- Can define commands in protobuf schema
- Send command with Targets and JSON payload to target multiple devices
- Explore commands
- Be able to send commands via window with parameters based on the schema
- Send and explore in TUI
- Custom Protobuff annotation for Mir System for commands
- Added commands handler to the SDK
- Add new set of events regarding commands
- Integration test for the command module
- Module SDK rewrite
- CLI Improvements for device, telemetry and cmds
- CLI for serve Mir backend
- CLI for swarm to mimic device
- VsCode tasks
Twin module to tackle the configuration mangement of devices. Flow of desired properties set by the user and reported properties set by the device.
- Can define properties in protobuf schema or maybe JSON is better since it will be hard with the twin template
- Can create twin template
- Custom Protobuff annotation for Mir System for properties
- Add desired properties handler to the SDK
- Add reported properties function
- Add new set of events regarding propeties
- create the twin template features
The goal is too focus on SDK requirements or QOL that are not bound to a module
- Add local storage for message in case of network outage
- Add the ability to publish to custom routes
- Add the ability to subscribe to custome route
- Look at replacing SurrealDB with NatsIO Keyvalue or Badger
The main goal of this version is to focus on the deployment and production toolings such as pipeline and conternarization
- Add env var for integration test if run
-
Containerize all services
-
Provide template container for sdk
-
Create Docker Compose for each and one all together
-
Create set of pipelines for unit and integration testing
-
Pipeline to release binaries of each interfaces or services
-
Pipeline for publishing containers
-
Make sure the sdks are available via go get/install
Create a utility tool to virtualize devices. This will be used for extensive integration and performance testing to increase reliability and performance