start building PWA
This commit is contained in:
parent
42aaa21703
commit
70e7afcf39
66
setup.sh
66
setup.sh
|
@ -942,6 +942,58 @@ echo "✅ Database migration completed!"
|
||||||
SCRIPT_END
|
SCRIPT_END
|
||||||
chmod +x ../upgrade.sh
|
chmod +x ../upgrade.sh
|
||||||
|
|
||||||
|
# Manifest for PWA
|
||||||
|
cat <<MANIFEST_END > static/manifest.json
|
||||||
|
{
|
||||||
|
"name": "Game Key Manager",
|
||||||
|
"short_name": "GameKeys",
|
||||||
|
"start_url": "/",
|
||||||
|
"display": "standalone",
|
||||||
|
"background_color": "#212529",
|
||||||
|
"theme_color": "#212529",
|
||||||
|
"description": "Manage Steam/GOG keys easily!",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/static/logo_small.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png",
|
||||||
|
"purpose": "any maskable"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/static/logo.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
MANIFEST_END
|
||||||
|
|
||||||
|
# Service Worker
|
||||||
|
cat <<SW_END > static/serviceworker.js
|
||||||
|
const CACHE_NAME = 'game-key-manager-v1';
|
||||||
|
const ASSETS = [
|
||||||
|
'/',
|
||||||
|
'/static/style.css',
|
||||||
|
'/static/logo.png',
|
||||||
|
'/static/logo_small.png',
|
||||||
|
'/static/gog_logo.png'
|
||||||
|
];
|
||||||
|
|
||||||
|
self.addEventListener('install', (event) => {
|
||||||
|
event.waitUntil(
|
||||||
|
caches.open(CACHE_NAME)
|
||||||
|
.then(cache => cache.addAll(ASSETS))
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
self.addEventListener('fetch', (event) => {
|
||||||
|
event.respondWith(
|
||||||
|
caches.match(event.request)
|
||||||
|
.then(cachedResponse => cachedResponse || fetch(event.request))
|
||||||
|
);
|
||||||
|
});
|
||||||
|
SW_END
|
||||||
|
|
||||||
|
|
||||||
# 9. Templates
|
# 9. Templates
|
||||||
mkdir -p templates static
|
mkdir -p templates static
|
||||||
|
@ -957,6 +1009,8 @@ cat <<HTML_END > templates/base.html
|
||||||
<title>{{ _('Game Key Manager') }}</title>
|
<title>{{ _('Game Key Manager') }}</title>
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||||
|
<link rel="manifest" href="{{ url_for('static', filename='manifest.json') }}">
|
||||||
|
<meta name="theme-color" content="#212529">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-expand-lg bg-body-tertiary">
|
<nav class="navbar navbar-expand-lg bg-body-tertiary">
|
||||||
|
@ -1028,6 +1082,18 @@ cat <<HTML_END > templates/base.html
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
<script>
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
window.addEventListener('load', function() {
|
||||||
|
navigator.serviceWorker.register('/static/serviceworker.js')
|
||||||
|
.then(function(registration) {
|
||||||
|
console.log('ServiceWorker registered:', registration.scope);
|
||||||
|
}, function(err) {
|
||||||
|
console.log('ServiceWorker registration failed:', err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
{% include "footer.html" %}
|
{% include "footer.html" %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in New Issue