add PWA & makeup

This commit is contained in:
2026-04-19 16:12:24 +02:00
parent d01226cb5a
commit 5cc1257859
4 changed files with 62 additions and 1 deletions
+13 -1
View File
@@ -1,4 +1,4 @@
from flask import Flask, render_template, request, session, jsonify from flask import Flask, render_template, request, session, jsonify, send_from_directory
from paho.mqtt import client as mqtt_client from paho.mqtt import client as mqtt_client
from werkzeug.security import generate_password_hash, check_password_hash from werkzeug.security import generate_password_hash, check_password_hash
import json import json
@@ -569,6 +569,18 @@ def save_config_file():
conn.close() conn.close()
return jsonify({"success": True}) return jsonify({"success": True})
@app.route('/manifest.json')
def serve_manifest():
return send_from_directory('.', 'manifest.json')
@app.route('/sw.js')
def serve_sw():
return send_from_directory('.', 'sw.js')
@app.route('/icon-512.png')
def serve_icon():
return send_from_directory('.', 'icon-512.png')
if __name__ == '__main__': if __name__ == '__main__':
threading.Thread(target=auto_update_ids, daemon=True).start() threading.Thread(target=auto_update_ids, daemon=True).start()
app.run(host='0.0.0.0', port=5000) app.run(host='0.0.0.0', port=5000)
+15
View File
@@ -0,0 +1,15 @@
{
"name": "Fleet Control Console",
"short_name": "Fleet C2",
"start_url": "/",
"display": "standalone",
"background_color": "#0f172a",
"theme_color": "#3b82f6",
"icons": [
{
"src": "/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
+18
View File
@@ -0,0 +1,18 @@
const CACHE_NAME = 'fleet-c2-v1';
const urlsToCache = [
'/',
'/manifest.json'
];
self.addEventListener('install', event => {
event.waitUntil(
caches.open(CACHE_NAME)
.then(cache => cache.addAll(urlsToCache))
);
});
self.addEventListener('fetch', event => {
event.respondWith(
fetch(event.request).catch(() => caches.match(event.request))
);
});
+16
View File
@@ -5,6 +5,11 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fleet Control Console</title> <title>Fleet Control Console</title>
<link rel="manifest" href="/manifest.json">
<meta name="theme-color" content="#0f172a">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="apple-touch-icon" href="/icon-512.png">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;800&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;800&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
<style> <style>
:root { :root {
@@ -1008,5 +1013,16 @@
initUI(); initUI();
</script> </script>
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js').then(reg => {
console.log('ServiceWorker registrato con successo!', reg.scope);
}).catch(err => {
console.log('Registrazione ServiceWorker fallita: ', err);
});
});
}
</script>
</body> </body>
</html> </html>