The face detection demo snap enables people to show multiple faces of snaps. It comprehends:
- a face-detection-service, which can:
- toggle on/off face detection (a webcam is required)
- collect stats over time and store it in a sqlite database
- serve via a webserver (on http://IP:8080) those results in a single page app, with graph history, last webcam screenshot, last image with detected faces circled (note that the html/css/javascript code is in another repo)
- use websocket to connect multiple clients, and refresh data to each web page without needing to reload it
- enable "fun" mode where detected faces circle are replaced by distribution logo attributed randomly
- a face-detection-cli tool, which can:
- enable/disable face detection webcam (the webserver will still be served though). No new data is collected when face detection is disabled
- toggle between normal/fun rendering mode
- quit the service
The application is buggy on purpose with version 2.0. The data from previous run will be destroyed (and the web page data refresh to reflects this) and it instructs the web page to turn RED.
This enables to illustrate the snap revert
functionality where the previous version will be restored (service restarted) as well as previous data which will be repopulated on the web page.
A snapcraft.yaml is provided which demonstrates multiple features!
- building a golang app
- shipping a service and a cli tool
- copying local assets
- referencing other repository (the web code)
- give some network-related security permission
- have different security configuration per application
This service generates some files available in $SNAP_DATA
(root project directory if ran from master without this variable set):
- configuration (saved by the service for persistency over restart) in
settings
- sqlite database contentstorage main data in
storage.db
screencapture.png
andscreendetected.png
for latest captured images.