How the browser side of this app is built
.html file inside the templates/ folder<style> tag — no external stylesheet#667eea → #764ba2) is shared across all pages@media (max-width: 768px) queriesgetElementById, innerHTML, classList<script> tags at the bottom of each HTML pagetemplates/ folderrender_template('page.html') in each Flask route/chart) and Vitals (/vitals) pagescdn.jsdelivr.net/npm/[email protected]chartjs-adapter-date-fns plugin is also loaded to handle date axeswindow.crypto.subtlestatic/crypto.js to encrypt and decrypt diary entriessessionStorage for the browser sessionENC:<iv>:<ciphertext> in the databasecrypto.subtle is unavailable over plain HTTPcapacitor.config.json with the server URL set to https://j4h.organdroid/ folder is the full Android Studio project generated by Capacitorcom.j4h.healthdiary, built and deployed via Android StudioFlask serves plain HTML pages. The browser loads them, then JavaScript fetches data from the Flask API. Entries are decrypted in the browser using the Web Crypto API before being displayed. Chart.js renders the visualizations. Capacitor packages the whole thing as an Android app. No build step. No framework. Just the web platform.