kritter looks to be bespoke software by charmed labs and integral to the operation of Vizy. And it appears to build on elements of dash. Where is the structure of all of this documented?
Also – it’d be nice if the files/code were commented.
/usr/local/lib/python3.7/dist-packages/kritter
├── about.py
├── assets
│ ├── bootstrap.min.css
│ ├── font-awesome.css
│ ├── font-awesome-css.min.css
│ ├── font-awesome.js
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ └── fontawesome-webfont.woff2
├── client_secret.json
├── excepthook.py
├── execterm.py
├── gcloud.py
├── gpstoremedia.py
├── h264.py
├── init.py
├── ipa_rpi.so
├── ipa_rpi.so.sign
├── kbutton.py
├── kcamera.cpython-37m-arm-linux-gnueabihf.so
├── kcheckbox.py
├── kcomponent.py
├── kdialog.py
├── kdropdownmenu.py
├── kdropdown.py
├── keditor
│ ├── init.py
│ ├── keditor.html
│ ├── keditor.py
│ ├── pycache
│ └── static
├── kencoder.cpython-37m-arm-linux-gnueabihf.so
├── kimagedetector.py
├── klogin.py
├── kradio.py
├── kritter.py
├── kslider.py
├── kstoremedia.py
├── kterm
│ ├── init.py
│ ├── kterm.html
│ ├── kterm.py
│ ├── pycache
│ └── static
├── ktextbox.py
├── ktext.py
├── kvideocomp
│ ├── imports.py
│ ├── init.py
│ ├── kvideocomp.dev.js
│ ├── kvideocomp.dev.js.map
│ ├── kvideocomp.min.js
│ ├── kvideocomp.min.js.map
│ ├── KvideoComp.py
│ ├── metadata.json
│ ├── package-info.json
│ └── pycache
├── kvideo.py
├── libcamera.so
├── login
│ └── login.html
├── media
│ └── favicon.ico
├── proxy.py
├── pycache
│ ├── about.cpython-37.pyc
│ ├── excepthook.cpython-37.pyc
│ ├── execterm.cpython-37.pyc
│ ├── gcloud.cpython-37.pyc
│ ├── gpstoremedia.cpython-37.pyc
│ ├── h264.cpython-37.pyc
│ ├── init.cpython-37.pyc
│ ├── kbutton.cpython-37.pyc
│ ├── kcheckbox.cpython-37.pyc
│ ├── kcomponent.cpython-37.pyc
│ ├── kdialog.cpython-37.pyc
│ ├── kdropdown.cpython-37.pyc
│ ├── kdropdownmenu.cpython-37.pyc
│ ├── kimagedetector.cpython-37.pyc
│ ├── klogin.cpython-37.pyc
│ ├── kradio.cpython-37.pyc
│ ├── kritter.cpython-37.pyc
│ ├── kslider.cpython-37.pyc
│ ├── kstoremedia.cpython-37.pyc
│ ├── ktextbox.cpython-37.pyc
│ ├── ktext.cpython-37.pyc
│ ├── kvideo.cpython-37.pyc
│ ├── proxy.cpython-37.pyc
│ ├── resetexec.cpython-37.pyc
│ ├── savemediaqueue.cpython-37.pyc
│ ├── streamer.cpython-37.pyc
│ └── util.cpython-37.pyc
├── resetexec.py
├── savemediaqueue.py
├── streamer.py
├── tf
│ ├── birdfeeder
│ ├── coco
│ ├── init.py
│ ├── label_map_util.py
│ ├── pycache
│ ├── string_int_label_map_pb2.py
│ └── tfdetector.py
├── tflite
│ ├── coco
│ ├── init.py
│ ├── pycache
│ └── tflitedetector.py
└── util.py
and vizy is the other main folder.
/home/pi/vizy
├── apps
│ ├── birdfeeder
│ │ ├── birdfeeder_consts.py
│ │ ├── __birdfeeder.jpg
│ │ ├── birdfeeder.jpg
│ │ ├── info.json
│ │ ├── main.py
│ │ └── media
│ └── motionscope
│ ├── analyze.py
│ ├── camera.py
│ ├── capture.py
│ ├── centroidtracker.py
│ ├── dataupdate.py
│ ├── graphs.py
│ ├── info.json
│ ├── main.py
│ ├── media
│ ├── motion.py
│ ├── motionscope_consts.py
│ ├── __motionscope.jpg
│ ├── motionscope.jpg
│ ├── process.py
│ ├── pycache
│ ├── simplemotion.py
│ └── tab.py
├── etc
│ ├── birdfeeder_consts.py
│ ├── birdfeeder.json
│ ├── editor_settings.json
│ ├── pycache
│ │ └── birdfeeder_consts.cpython-37.pyc
│ ├── remote.json
│ ├── remote_key
│ ├── remote_key.pub
│ ├── users.json
│ ├── vizy_main.json
│ └── wifi.json
├── examples
│ ├── edge_detection
│ │ ├── info.json
│ │ └── main.py
│ ├── pet_companion
│ │ ├── hey.wav
│ │ ├── info.json
│ │ ├── main.py
│ │ └── media
│ ├── pictaker
│ │ ├── info.json
│ │ └── main.py
│ ├── tensorflow
│ │ ├── info.json
│ │ ├── main.py
│ │ └── main.py.bak
│ ├── tflite
│ │ ├── info.json
│ │ └── main.py
│ └── video
│ ├── info.json
│ └── main.py
├── scripts
│ ├── install_services
│ ├── install_update
│ ├── update_power_firmware
│ ├── vizy_fu
│ ├── vizy_power_monitor
│ ├── vizy_power_off
│ └── vizy_server
└── sys
├── vizy_io-0.1.3.fwe
├── vizy-power-monitor.service
├── vizy-power-off.service
└── vizy-server.service
/usr/local/lib/python3.7/dist-packages/dash
├── _callback_context.py
├── _configs.py
├── dash.py
├── dependencies.py
├── development
│ ├── _all_keywords.py
│ ├── base_component.py
│ ├── build_process.py
│ ├── component_generator.py
│ ├── component_loader.py
│ ├── init.py
│ ├── _jl_components_generation.py
│ ├── pycache
│ ├── _py_components_generation.py
│ └── _r_components_generation.py
├── exceptions.py
├── extract-meta.js
├── favicon.ico
├── fingerprint.py
├── init.py
├── pycache
│ ├── _callback_context.cpython-37.pyc
│ ├── _configs.cpython-37.pyc
│ ├── dash.cpython-37.pyc
│ ├── dependencies.cpython-37.pyc
│ ├── exceptions.cpython-37.pyc
│ ├── fingerprint.cpython-37.pyc
│ ├── init.cpython-37.pyc
│ ├── resources.cpython-37.pyc
│ ├── _utils.cpython-37.pyc
│ ├── _validate.cpython-37.pyc
│ ├── version.cpython-37.pyc
│ └── _watch.cpython-37.pyc
├── resources.py
├── testing
│ ├── application_runners.py
│ ├── browser.py
│ ├── composite.py
│ ├── consts.py
│ ├── dash_page.py
│ ├── errors.py
│ ├── init.py
│ ├── newhooks.py
│ ├── plugin.py
│ ├── pycache
│ └── wait.py
├── _utils.py
├── _validate.py
├── version.py
└── _watch.py