diff --git a/frontend/app/angular.json b/frontend/app/angular.json index b2c7239b..3ce45bbb 100644 --- a/frontend/app/angular.json +++ b/frontend/app/angular.json @@ -40,14 +40,17 @@ "glob": "CHANGELOG.md", "input": ".", "output": "assets" - } + }, + "src/manifest.webmanifest" ], "styles": [ { "input": "src/global.scss", "inject": true } - ] + ], + "serviceWorker": true, + "ngswConfigPath": "ngsw-config.json" }, "configurations": { "production": { @@ -129,7 +132,8 @@ "glob": "**/*", "input": "src/assets", "output": "/assets" - } + }, + "src/manifest.webmanifest" ] } }, diff --git a/frontend/app/ngsw-config.json b/frontend/app/ngsw-config.json new file mode 100644 index 00000000..b4f5aa44 --- /dev/null +++ b/frontend/app/ngsw-config.json @@ -0,0 +1,21 @@ +{ + "$schema": "./node_modules/@angular/service-worker/config/schema.json", + "index": "/index.html", + "assetGroups": [ + { + "name": "app", + "installMode": "prefetch", + "resources": { + "files": ["/favicon.ico", "/index.html", "/manifest.webmanifest", "/*.css", "/*.js"] + } + }, + { + "name": "assets", + "installMode": "lazy", + "updateMode": "prefetch", + "resources": { + "files": ["/assets/**", "/*.(svg|cur|jpg|jpeg|png|apng|webp|avif|gif|otf|ttf|woff|woff2)"] + } + } + ] +} diff --git a/frontend/app/package.json b/frontend/app/package.json index e52845cc..0359bae0 100644 --- a/frontend/app/package.json +++ b/frontend/app/package.json @@ -59,6 +59,7 @@ "@angular/forms": "17.3.0", "@angular/platform-browser": "17.3.0", "@angular/router": "17.3.0", + "@angular/service-worker": "17.3.0", "@awesome-cordova-plugins/calendar": "6.6.0", "@awesome-cordova-plugins/core": "6.6.0", "@capacitor-community/screen-brightness": "6.0.0", diff --git a/frontend/app/resources/logo_pwa.svg b/frontend/app/resources/logo_pwa.svg new file mode 100644 index 00000000..cc119dcf --- /dev/null +++ b/frontend/app/resources/logo_pwa.svg @@ -0,0 +1,73 @@ + + + + diff --git a/frontend/app/src/app/app.module.ts b/frontend/app/src/app/app.module.ts index 80c0fcd6..e08b7b2c 100644 --- a/frontend/app/src/app/app.module.ts +++ b/frontend/app/src/app/app.module.ts @@ -15,7 +15,7 @@ import {CommonModule, LocationStrategy, PathLocationStrategy, registerLocaleData} from '@angular/common'; import {HTTP_INTERCEPTORS, HttpClient, HttpClientModule} from '@angular/common/http'; import localeDe from '@angular/common/locales/de'; -import {APP_INITIALIZER, NgModule} from '@angular/core'; +import {APP_INITIALIZER, NgModule, isDevMode} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser'; import {RouteReuseStrategy} from '@angular/router'; import {IonicModule, IonicRouteStrategy, Platform} from '@ionic/angular'; @@ -71,6 +71,7 @@ import {Capacitor} from '@capacitor/core'; import {SplashScreen} from '@capacitor/splash-screen'; import maplibregl from 'maplibre-gl'; import {Protocol} from 'pmtiles'; +import {ServiceWorkerModule} from '@angular/service-worker'; registerLocaleData(localeDe); @@ -185,6 +186,12 @@ export function createTranslateLoader(http: HttpClient) { LoggerModule.forRoot({ level: environment.production ? NgxLoggerLevel.FATAL : NgxLoggerLevel.TRACE, }), + ServiceWorkerModule.register('ngsw-worker.js', { + enabled: !isDevMode(), + // Register the ServiceWorker as soon as the application is stable + // or after 30 seconds (whichever comes first). + registrationStrategy: 'registerWhenStable:30000', + }), ], providers: [ { diff --git a/frontend/app/src/assets/icons/icon-128x128.png b/frontend/app/src/assets/icons/icon-128x128.png new file mode 100644 index 00000000..7eb6cbe9 Binary files /dev/null and b/frontend/app/src/assets/icons/icon-128x128.png differ diff --git a/frontend/app/src/assets/icons/icon-144x144.png b/frontend/app/src/assets/icons/icon-144x144.png new file mode 100644 index 00000000..54ab9046 Binary files /dev/null and b/frontend/app/src/assets/icons/icon-144x144.png differ diff --git a/frontend/app/src/assets/icons/icon-152x152.png b/frontend/app/src/assets/icons/icon-152x152.png new file mode 100644 index 00000000..e81c54f9 Binary files /dev/null and b/frontend/app/src/assets/icons/icon-152x152.png differ diff --git a/frontend/app/src/assets/icons/icon-192x192.png b/frontend/app/src/assets/icons/icon-192x192.png new file mode 100644 index 00000000..5667d0d2 Binary files /dev/null and b/frontend/app/src/assets/icons/icon-192x192.png differ diff --git a/frontend/app/src/assets/icons/icon-384x384.png b/frontend/app/src/assets/icons/icon-384x384.png new file mode 100644 index 00000000..5b9591d3 Binary files /dev/null and b/frontend/app/src/assets/icons/icon-384x384.png differ diff --git a/frontend/app/src/assets/icons/icon-512x512.png b/frontend/app/src/assets/icons/icon-512x512.png new file mode 100644 index 00000000..48b087cc Binary files /dev/null and b/frontend/app/src/assets/icons/icon-512x512.png differ diff --git a/frontend/app/src/assets/icons/icon-72x72.png b/frontend/app/src/assets/icons/icon-72x72.png new file mode 100644 index 00000000..1aa709e1 Binary files /dev/null and b/frontend/app/src/assets/icons/icon-72x72.png differ diff --git a/frontend/app/src/assets/icons/icon-96x96.png b/frontend/app/src/assets/icons/icon-96x96.png new file mode 100644 index 00000000..15563589 Binary files /dev/null and b/frontend/app/src/assets/icons/icon-96x96.png differ diff --git a/frontend/app/src/assets/screenshots/canteens-wide.png b/frontend/app/src/assets/screenshots/canteens-wide.png new file mode 100644 index 00000000..c68242b2 Binary files /dev/null and b/frontend/app/src/assets/screenshots/canteens-wide.png differ diff --git a/frontend/app/src/assets/screenshots/canteens.png b/frontend/app/src/assets/screenshots/canteens.png new file mode 100644 index 00000000..5b9e8f42 Binary files /dev/null and b/frontend/app/src/assets/screenshots/canteens.png differ diff --git a/frontend/app/src/assets/screenshots/map-wide.png b/frontend/app/src/assets/screenshots/map-wide.png new file mode 100644 index 00000000..21b790de Binary files /dev/null and b/frontend/app/src/assets/screenshots/map-wide.png differ diff --git a/frontend/app/src/assets/screenshots/map.png b/frontend/app/src/assets/screenshots/map.png new file mode 100644 index 00000000..449be0ca Binary files /dev/null and b/frontend/app/src/assets/screenshots/map.png differ diff --git a/frontend/app/src/assets/screenshots/my-app-wide.png b/frontend/app/src/assets/screenshots/my-app-wide.png new file mode 100644 index 00000000..2f03c0ee Binary files /dev/null and b/frontend/app/src/assets/screenshots/my-app-wide.png differ diff --git a/frontend/app/src/assets/screenshots/my-app.png b/frontend/app/src/assets/screenshots/my-app.png new file mode 100644 index 00000000..65398f0a Binary files /dev/null and b/frontend/app/src/assets/screenshots/my-app.png differ diff --git a/frontend/app/src/assets/screenshots/overview-wide.png b/frontend/app/src/assets/screenshots/overview-wide.png new file mode 100644 index 00000000..995e53bc Binary files /dev/null and b/frontend/app/src/assets/screenshots/overview-wide.png differ diff --git a/frontend/app/src/assets/screenshots/overview.png b/frontend/app/src/assets/screenshots/overview.png new file mode 100644 index 00000000..14615cee Binary files /dev/null and b/frontend/app/src/assets/screenshots/overview.png differ diff --git a/frontend/app/src/index.html b/frontend/app/src/index.html index cf3ded06..98732253 100644 --- a/frontend/app/src/index.html +++ b/frontend/app/src/index.html @@ -23,8 +23,11 @@ + +