Programmed in Dart. Source code available at GitHub.