The three applications are packages as follows:
Chrome extension The drawing canvas is packaged and distributed as part of the extension so each user retains their own copy. This version never requires post-installation network access since each user maintains their own copy. Updates to the application source are managed and distributed automatically by chrome browser upon published version update. The application is available and can be installed from the Chrome Web Store.
Website The drawing canvas is packaged and served as a progressive website. Each user shares access to the same resource. This website is served over HTTPS and uses service worker to enable use in offline state provided that user has visited the application at least one time. The website also includes a manifest and depending on the device, may prompt users to add the app to home screen. On mobile devices, adding to home screen creates an app button similar to native apps. On desktop devices, adding to home screen creates a desktop icon. The desktop version can be launched in a window mode (without navigation bar and buttons) to produce appearance of native desktop app.
Android The android app displays the above website in a WebView in its main activity and implements callback listeners to handle image saving to disk natively on device. It alo includes a native splash screen. Since the website is offline enabled, it works on device also as long as the user has launched the app at least once. While this approach works, the drawback of this approach is the rendering on the mobile device is not as sharp as it could be. It may be worthwhile to implement the drawing functionality natively, however by doing so, the different applications will no longer share the same core source code. Also interesting to note: PWA website of this application added to home screen uses only ~336 kB of internal storage, while native app requires ~6.64 MB. The android app is published and available through Google Play Store. Updates to the application are published and distributed over Google Play Store.