diff --git a/Dockerfile b/Dockerfile index c4e5f72..3cf8700 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,6 +28,7 @@ RUN rm -rf /usr/share/nginx/html/* # Copy frontend dist folder to nginx html directory COPY --from=build-frontend /app/dist/browser /usr/share/nginx/html +RUN mkdir -p /usr/share/nginx/html/config # Copy backend from the correct build stage COPY --from=build-backend /app/publish /app diff --git a/Front/skydivelogs-app/angular.json b/Front/skydivelogs-app/angular.json index 536253f..663d628 100644 --- a/Front/skydivelogs-app/angular.json +++ b/Front/skydivelogs-app/angular.json @@ -1,149 +1,141 @@ { - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "skydivelogs-app": { - "projectType": "application", - "schematics": { + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "skydivelogs-app": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular/build:application", + "options": { + "outputPath": "dist", + "index": "src/index.html", + "browser": "src/main.ts", + "polyfills": ["zone.js"], + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": ["src/assets", "src/favicon.ico"], + "styles": [ + "src/assets/css/styles-app-loading.scss", + "src/assets/css/styles.css", + "src/assets/css/new-theme.scss", + "@angular/material/prebuilt-themes/pink-bluegrey.css" + ], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + }, + { + "type": "bundle", + "name": "main", + "baseline": "1mb", + "maximumWarning": "1.5mb", + "maximumError": "2mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all", + "optimization": true, + "extractLicenses": true, + "sourceMap": false, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ] + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.dev.ts" + } + ] + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular/build:dev-server", + "configurations": { + "production": { + "buildTarget": "skydivelogs-app:build:production" + }, + "development": { + "buildTarget": "skydivelogs-app:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular/build:extract-i18n" + }, + "test": { + "builder": "@angular/build:karma", + "options": { + "polyfills": ["zone.js", "zone.js/testing"], + "tsConfig": "tsconfig.spec.json", + "inlineStyleLanguage": "scss", + "assets": [ + { + "glob": "**/*", + "input": "public" + } + ], + "styles": ["src/styles.scss"], + "scripts": [] + } + } + } + } + }, + "schematics": { "@schematics/angular:component": { - "style": "scss" + "type": "component" + }, + "@schematics/angular:directive": { + "type": "directive" + }, + "@schematics/angular:service": { + "type": "service" + }, + "@schematics/angular:guard": { + "typeSeparator": "." + }, + "@schematics/angular:interceptor": { + "typeSeparator": "." + }, + "@schematics/angular:module": { + "typeSeparator": "." + }, + "@schematics/angular:pipe": { + "typeSeparator": "." + }, + "@schematics/angular:resolver": { + "typeSeparator": "." } - }, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular/build:application", - "options": { - "outputPath": "dist", - "index": "src/index.html", - "browser": "src/main.ts", - "polyfills": ["zone.js"], - "tsConfig": "tsconfig.app.json", - "inlineStyleLanguage": "scss", - "assets": [ - "src/assets", - "src/config", - "src/favicon.ico", - { - "glob": "**/*", - "input": "public" - } - ], - "styles": [ - "src/assets/css/styles-app-loading.scss", - "src/assets/css/styles.css", - "src/assets/css/new-theme.scss", - "@angular/material/prebuilt-themes/pink-bluegrey.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "2mb", - "maximumError": "5mb" - }, - { - "type": "bundle", - "name": "main", - "baseline": "1mb", - "maximumWarning": "1.5mb", - "maximumError": "2mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "outputHashing": "all", - "optimization": true, - "extractLicenses": true, - "sourceMap": false, - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ] - }, - "development": { - "optimization": false, - "extractLicenses": false, - "sourceMap": true, - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.dev.ts" - } - ] - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular/build:dev-server", - "configurations": { - "production": { - "buildTarget": "skydivelogs-app:build:production" - }, - "development": { - "buildTarget": "skydivelogs-app:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular/build:extract-i18n" - }, - "test": { - "builder": "@angular/build:karma", - "options": { - "polyfills": ["zone.js", "zone.js/testing"], - "tsConfig": "tsconfig.spec.json", - "inlineStyleLanguage": "scss", - "assets": [ - { - "glob": "**/*", - "input": "public" - } - ], - "styles": ["src/styles.scss"], - "scripts": [] - } - } - } } - }, - "schematics": { - "@schematics/angular:component": { - "type": "component" - }, - "@schematics/angular:directive": { - "type": "directive" - }, - "@schematics/angular:service": { - "type": "service" - }, - "@schematics/angular:guard": { - "typeSeparator": "." - }, - "@schematics/angular:interceptor": { - "typeSeparator": "." - }, - "@schematics/angular:module": { - "typeSeparator": "." - }, - "@schematics/angular:pipe": { - "typeSeparator": "." - }, - "@schematics/angular:resolver": { - "typeSeparator": "." - } - } } diff --git a/Front/skydivelogs-app/package.json b/Front/skydivelogs-app/package.json index a3ae4b5..c432f2c 100644 --- a/Front/skydivelogs-app/package.json +++ b/Front/skydivelogs-app/package.json @@ -1,46 +1,46 @@ { - "name": "skydivelogs-app", - "version": "0.0.0", - "license": "MIT", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "test": "ng test", - "lint": "ng lint", - "e2e": "ng e2e" - }, - "private": true, - "dependencies": { - "@angular/animations": "^20.3.16", - "@angular/cdk": "^20.2.14", - "@angular/common": "^20.3.16", - "@angular/compiler": "^20.3.16", - "@angular/core": "^20.3.16", - "@angular/forms": "^20.3.16", - "@angular/material": "^20.2.14", - "@angular/platform-browser": "^20.3.16", - "@angular/platform-browser-dynamic": "^20.3.16", - "@angular/router": "^20.3.16", - "@ngx-translate/core": "^17.0.0", - "@ngx-translate/http-loader": "^17.0.0", - "chart.js": "^4.3.0", - "ng2-charts": "^8.0.0", - "rxjs": "~7.8.0", - "tslib": "^2.3.0", - "zone.js": "~0.15.0" - }, - "devDependencies": { - "@angular/build": "^20.3.14", - "@angular/cli": "~20.3.14", - "@angular/compiler-cli": "^20.3.16", - "@types/jasmine": "~4.3.0", - "jasmine-core": "~5.1.0", - "karma": "~6.4.0", - "karma-chrome-launcher": "~3.2.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.9.3" - } -} \ No newline at end of file + "name": "skydivelogs-app", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --env=prod", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^20.3.16", + "@angular/cdk": "^20.2.14", + "@angular/common": "^20.3.16", + "@angular/compiler": "^20.3.16", + "@angular/core": "^20.3.16", + "@angular/forms": "^20.3.16", + "@angular/material": "^20.2.14", + "@angular/platform-browser": "^20.3.16", + "@angular/platform-browser-dynamic": "^20.3.16", + "@angular/router": "^20.3.16", + "@ngx-translate/core": "^17.0.0", + "@ngx-translate/http-loader": "^17.0.0", + "chart.js": "^4.3.0", + "ng2-charts": "^8.0.0", + "rxjs": "~7.8.0", + "tslib": "^2.3.0", + "zone.js": "~0.15.0" + }, + "devDependencies": { + "@angular/build": "^20.3.14", + "@angular/cli": "~20.3.14", + "@angular/compiler-cli": "^20.3.16", + "@types/jasmine": "~4.3.0", + "jasmine-core": "~5.1.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "typescript": "~5.9.3" + } +}