2018-03-24 20:01:49 +08:00
|
|
|
# termdash
|
2018-03-24 20:14:06 +08:00
|
|
|
|
|
|
|
This project implements a terminal based dashboard. The feature set is inspired
|
2018-03-24 20:31:33 +08:00
|
|
|
by the [gizak/termui](http://github.com/gizak/termui) project, which in turn
|
|
|
|
was inspired by a javascript based
|
|
|
|
[yaronn/blessed-contrib](http://github.com/yaronn/blessed-contrib). Why the
|
|
|
|
rewrite you ask?
|
2018-03-24 20:14:06 +08:00
|
|
|
|
2018-03-24 20:31:33 +08:00
|
|
|
1. The above mentioned [gizak/termui](http://github.com/gizak/termui) is
|
|
|
|
abandoned and isn't maintained anymore.
|
2018-03-24 20:14:06 +08:00
|
|
|
1. The project doesn't follow the design goals outlined below.
|
2018-03-24 20:31:33 +08:00
|
|
|
1. The project is released under a licence I cannot use.
|
2018-03-24 20:14:06 +08:00
|
|
|
|
|
|
|
# Design goals
|
|
|
|
|
|
|
|
This effort is focused on good software design and maintainability. By a good
|
|
|
|
software I mean:
|
|
|
|
|
|
|
|
1. Write readable, well documented code.
|
2018-03-24 20:31:33 +08:00
|
|
|
1. Only beautiful, simple APIs, no exposed concurrency, channels, internals, etc.
|
|
|
|
1. Follow [Effective Go](http://golang.org/doc/effective_go.html).
|
2018-03-24 20:14:06 +08:00
|
|
|
1. Provide an infrastructure that allows development of individual dashboard
|
|
|
|
components in separation.
|
2018-03-24 20:31:33 +08:00
|
|
|
1. The infrastructure must enforce consistency in how the dashboard components
|
|
|
|
are implemented.
|
2018-03-24 20:14:06 +08:00
|
|
|
1. Focus on maintainability, the infrastructure and dashboard components must
|
|
|
|
have good test coverage, the repository must have CI/CD enabled.
|
|
|
|
|
|
|
|
On top of that - let's have fun, learn something and become better developers
|
|
|
|
together.
|
2018-03-24 20:31:33 +08:00
|
|
|
|
|
|
|
# Requirements
|
|
|
|
|
2018-03-26 22:40:23 +08:00
|
|
|
1. Native support of the UTF-8 encoding.
|
|
|
|
1. Simple container management to position the widgets and set their size.
|
2018-03-24 20:31:33 +08:00
|
|
|
1. Mouse and keyboard input.
|
|
|
|
1. Cross-platform terminal based output.
|
|
|
|
1. Unit testing framework for simple and readable tests of dashboard elements.
|
2018-03-26 22:40:23 +08:00
|
|
|
1. Tooling to streamline addition of new widgets.
|
|
|
|
1. Apache-2.0 licence for the project.
|
2018-03-25 01:09:34 +08:00
|
|
|
|
|
|
|
# High-Level design
|
|
|
|
|
|
|
|
See the [design document](doc/design.md).
|
2018-03-27 01:22:07 +08:00
|
|
|
|
|
|
|
# Project status
|
|
|
|
|
|
|
|
- [x] High-Level Design.
|
2018-03-28 02:01:35 +08:00
|
|
|
- [x] Submit the APIs.
|
2018-03-27 01:22:07 +08:00
|
|
|
- [ ] Implement the terminal layer.
|
|
|
|
- [ ] Implement the container.
|
|
|
|
- [ ] Implement the input event pre-processing.
|
|
|
|
- [ ] Implement the infrastructure layer.
|
|
|
|
- [ ] Implement unit test helpers.
|
|
|
|
- [ ] Implement the first widget.
|
|
|
|
- [ ] Documentation and tooling for widget development.
|
|
|
|
- [ ] Launch and iterate.
|