diff --git a/app/src/app.html b/app/src/app.html index 6b01ab9..bb189d2 100644 --- a/app/src/app.html +++ b/app/src/app.html @@ -7,11 +7,22 @@ + + + + + + + + + + + Audiora @@ -43,6 +54,14 @@
%sveltekit.body%
+ + \ No newline at end of file diff --git a/app/static/icons/icon-128x128.png b/app/static/icons/icon-128x128.png new file mode 100644 index 0000000..8f55565 Binary files /dev/null and b/app/static/icons/icon-128x128.png differ diff --git a/app/static/icons/icon-144x144.png b/app/static/icons/icon-144x144.png new file mode 100644 index 0000000..6b64492 Binary files /dev/null and b/app/static/icons/icon-144x144.png differ diff --git a/app/static/icons/icon-152x152.png b/app/static/icons/icon-152x152.png new file mode 100644 index 0000000..2c1a7eb Binary files /dev/null and b/app/static/icons/icon-152x152.png differ diff --git a/app/static/icons/icon-192x192.png b/app/static/icons/icon-192x192.png new file mode 100644 index 0000000..bed0fda Binary files /dev/null and b/app/static/icons/icon-192x192.png differ diff --git a/app/static/icons/icon-256x256.png b/app/static/icons/icon-256x256.png new file mode 100644 index 0000000..7486ef7 Binary files /dev/null and b/app/static/icons/icon-256x256.png differ diff --git a/app/static/icons/icon-384x384.png b/app/static/icons/icon-384x384.png new file mode 100644 index 0000000..ce72b13 Binary files /dev/null and b/app/static/icons/icon-384x384.png differ diff --git a/app/static/icons/icon-48x48.png b/app/static/icons/icon-48x48.png new file mode 100644 index 0000000..10a5437 Binary files /dev/null and b/app/static/icons/icon-48x48.png differ diff --git a/app/static/icons/icon-512x512.png b/app/static/icons/icon-512x512.png new file mode 100644 index 0000000..b0a2925 Binary files /dev/null and b/app/static/icons/icon-512x512.png differ diff --git a/app/static/icons/icon-72x72.png b/app/static/icons/icon-72x72.png new file mode 100644 index 0000000..dca8d4d Binary files /dev/null and b/app/static/icons/icon-72x72.png differ diff --git a/app/static/icons/icon-96x96.png b/app/static/icons/icon-96x96.png new file mode 100644 index 0000000..ffc4939 Binary files /dev/null and b/app/static/icons/icon-96x96.png differ diff --git a/app/static/manifest.json b/app/static/manifest.json new file mode 100644 index 0000000..081ca08 --- /dev/null +++ b/app/static/manifest.json @@ -0,0 +1,52 @@ +{ + "name": "Audiora", + "short_name": "Audiora", + "description": "Listen to anything, anytime, leveraging AI", + "start_url": "/", + "display": "standalone", + "background_color": "#000000", + "theme_color": "#000000", + "icons": [ + { + "src": "/icons/icon-72x72.png", + "sizes": "72x72", + "type": "image/png" + }, + { + "src": "/icons/icon-96x96.png", + "sizes": "96x96", + "type": "image/png" + }, + { + "src": "/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png" + }, + { + "src": "/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png" + }, + { + "src": "/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png" + }, + { + "src": "/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "/icons/icon-384x384.png", + "sizes": "384x384", + "type": "image/png" + }, + { + "src": "/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/app/static/sw.js b/app/static/sw.js new file mode 100644 index 0000000..c4d1ff2 --- /dev/null +++ b/app/static/sw.js @@ -0,0 +1,53 @@ +const CACHE_NAME = 'audiora-v1'; +const urlsToCache = [ + '/', + '/manifest.json', + '/icons/icon-72x72.png', + '/icons/icon-96x96.png', + '/icons/icon-128x128.png', + '/icons/icon-144x144.png', + '/icons/icon-152x152.png', + '/icons/icon-192x192.png', + '/icons/icon-384x384.png', + '/icons/icon-512x512.png' +]; + +self.addEventListener('install', (event) => { + event.waitUntil( + caches.open(CACHE_NAME).then((cache) => cache.addAll(urlsToCache)) + ); +}); + +self.addEventListener('activate', (event) => { + event.waitUntil( + caches.keys().then((cacheNames) => { + return Promise.all( + cacheNames.map((cacheName) => { + if (cacheName !== CACHE_NAME) { + return caches.delete(cacheName); + } + }) + ); + }) + ); +}); + +self.addEventListener('fetch', (event) => { + event.respondWith( + caches.match(event.request).then((response) => { + if (response) { + return response; + } + return fetch(event.request).then((response) => { + if (!response || response.status !== 200 || response.type !== 'basic') { + return response; + } + const responseToCache = response.clone(); + caches.open(CACHE_NAME).then((cache) => { + cache.put(event.request, responseToCache); + }); + return response; + }); + }) + ); +});