diff --git a/frontend/favicon_black.png b/frontend/favicon_black.png
new file mode 100644
index 0000000..4bf9027
Binary files /dev/null and b/frontend/favicon_black.png differ
diff --git a/frontend/favicon_colour.png b/frontend/favicon_colour.png
new file mode 100644
index 0000000..8146683
Binary files /dev/null and b/frontend/favicon_colour.png differ
diff --git a/frontend/favicon_white.png b/frontend/favicon_white.png
new file mode 100644
index 0000000..09b5ae0
Binary files /dev/null and b/frontend/favicon_white.png differ
diff --git a/frontend/index.html b/frontend/index.html
index 963a03a..a293196 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -22,6 +22,8 @@
name="description"
content="Fast and free YouTube and Instagram video downloader. Convert to MP3 and MP4 in high quality."
/>
+
+
Reelo - YT & Insta Converter
diff --git a/frontend/manifest.json b/frontend/manifest.json
new file mode 100644
index 0000000..68950bf
--- /dev/null
+++ b/frontend/manifest.json
@@ -0,0 +1,46 @@
+{
+ "name": "Reelo | MTYT",
+ "short_name": "Reelo",
+ "description": "The awesome video download app!",
+ "icons": [
+ {
+ "sizes": "48x48",
+ "src": "maskable_icon_x48.png",
+ "type": "image/png"
+ },
+ {
+ "sizes": "72x72",
+ "src": "maskable_icon_x72.png",
+ "type": "image/png"
+ },
+ {
+ "sizes": "96x96",
+ "src": "maskable_icon_x96.png",
+ "type": "image/png"
+ },
+ {
+ "sizes": "128x128",
+ "src": "maskable_icon_x128.png",
+ "type": "image/png"
+ },
+ {
+ "sizes": "192x192",
+ "src": "maskable_icon_x192.png",
+ "type": "image/png"
+ },
+ {
+ "sizes": "384x384",
+ "src": "maskable_icon_x384.png",
+ "type": "image/png"
+ },
+ {
+ "sizes": "512x512",
+ "src": "maskable_icon_x512.png",
+ "type": "image/png"
+ }
+],
+ "start_url": ".",
+ "display": "standalone",
+ "theme_color": "#000000",
+ "background_color": "#000000"
+}
\ No newline at end of file
diff --git a/frontend/maskable_icon_x128.png b/frontend/maskable_icon_x128.png
new file mode 100644
index 0000000..6663b4f
Binary files /dev/null and b/frontend/maskable_icon_x128.png differ
diff --git a/frontend/maskable_icon_x192.png b/frontend/maskable_icon_x192.png
new file mode 100644
index 0000000..1ac6e6f
Binary files /dev/null and b/frontend/maskable_icon_x192.png differ
diff --git a/frontend/maskable_icon_x384.png b/frontend/maskable_icon_x384.png
new file mode 100644
index 0000000..5209351
Binary files /dev/null and b/frontend/maskable_icon_x384.png differ
diff --git a/frontend/maskable_icon_x48.png b/frontend/maskable_icon_x48.png
new file mode 100644
index 0000000..51a73d4
Binary files /dev/null and b/frontend/maskable_icon_x48.png differ
diff --git a/frontend/maskable_icon_x512.png b/frontend/maskable_icon_x512.png
new file mode 100644
index 0000000..9087ae7
Binary files /dev/null and b/frontend/maskable_icon_x512.png differ
diff --git a/frontend/maskable_icon_x72.png b/frontend/maskable_icon_x72.png
new file mode 100644
index 0000000..9268093
Binary files /dev/null and b/frontend/maskable_icon_x72.png differ
diff --git a/frontend/maskable_icon_x96.png b/frontend/maskable_icon_x96.png
new file mode 100644
index 0000000..e1d7ec5
Binary files /dev/null and b/frontend/maskable_icon_x96.png differ
diff --git a/frontend/static/js/app.js b/frontend/static/js/app.js
index 7ee3b5d..e3e86e3 100644
--- a/frontend/static/js/app.js
+++ b/frontend/static/js/app.js
@@ -456,3 +456,29 @@ if (currentMode === 'audio') {
}
// Set initial active format button
selectFormat(selectedFormat);
+
+
+function registerService() {
+ if ('serviceWorker' in navigator) {
+ navigator.serviceWorker.register("/static/js/sw.js");
+ }
+}
+
+
+let installPrompt = null;
+
+window.addEventListener("beforeinstallprompt", (event) => {
+ event.preventDefault();
+ installPrompt = event;
+});
+
+
+window.addEventListener('DOMContentLoaded', async() => {
+ if (!installPrompt) {
+ return;
+ }
+ const result = await installPrompt.prompt();
+ installPrompt = null;
+ registerService()
+
+})
\ No newline at end of file
diff --git a/frontend/static/js/sw.js b/frontend/static/js/sw.js
new file mode 100644
index 0000000..497ebf6
--- /dev/null
+++ b/frontend/static/js/sw.js
@@ -0,0 +1,45 @@
+const cachea = "SreeCache-v1";
+list = []
+var appshellfiles = [
+ '/index.html',
+ '/static/js/app.js',
+ '/static/js/sw.js',
+ '/static/css/style.css',
+ '/maskable_icon_x48.png',
+ '/maskable_icon_x72.png',
+ '/maskable_icon_x96.png',
+ '/maskable_icon_x128.png',
+ '/maskable_icon_x192.png',
+ '/maskable_icon_x384.png',
+ '/maskable_icon_x512.png',
+ '/favicon_black.png',
+ '/favicon_white.png',
+ '/favicon_colour.png'
+]
+appshellfiles = []
+self.addEventListener("install", e => {
+
+
+ e.waitUntil((async () => {
+
+ const cache = await caches.open(cachea);
+ await cache.addAll(appshellfiles);
+ })());
+
+
+});
+self.addEventListener("activate", event => {
+ console.log("WE ARE GOOGLY BOOGLY WOOGLY");
+});
+
+const cacheFirst = async (request) => {
+ const responseFromCache = await caches.match(request);
+ if (responseFromCache) {
+ return responseFromCache;
+ }
+ return fetch(request);
+};
+
+self.addEventListener("fetch", (event) => {
+ event.respondWith(cacheFirst(event.request));
+});
\ No newline at end of file