diff --git a/package-lock.json b/package-lock.json
index 719e17d8b265d61c11e2787e52d0de04a38140b4..70a284e290b3d476defbaec1b08460d1740ba584 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,6 +21,7 @@
         "bootstrap-icons": "^1.11.3",
         "chart.js": "^4.4.1",
         "file-saver": "^2.0.5",
+        "lodash": "~4.17.21",
         "ng-bootstrap": "^1.6.3",
         "rxjs": "~7.8.0",
         "tslib": "^2.3.0",
@@ -8155,8 +8156,7 @@
     "node_modules/lodash": {
       "version": "4.17.21",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
     },
     "node_modules/lodash.debounce": {
       "version": "4.0.8",
@@ -18786,8 +18786,7 @@
     "lodash": {
       "version": "4.17.21",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
     },
     "lodash.debounce": {
       "version": "4.0.8",
diff --git a/package.json b/package.json
index 4c0c6a3b519b85e419e65e96fd92e2315a6a23c8..cab38b32eeb341df795ee66f6c54384095da6345 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,8 @@
     "ng-bootstrap": "^1.6.3",
     "rxjs": "~7.8.0",
     "tslib": "^2.3.0",
-    "zone.js": "~0.14.2"
+    "zone.js": "~0.14.2",
+    "lodash": "~4.17.21"
   },
   "devDependencies": {
     "@angular-devkit/build-angular": "^17.0.10",
diff --git a/src/app/app.config.ts b/src/app/app.config.ts
index 26ddcbb8589bfd635e96706257d42b1fc43aed66..3ac576bbc6d4c5046e1bdd9f19b6be2d610eecfe 100644
--- a/src/app/app.config.ts
+++ b/src/app/app.config.ts
@@ -3,8 +3,9 @@ import { provideRouter } from '@angular/router';
 
 import { routes } from './app.routes';
 import {provideHttpClient} from "@angular/common/http";
+import { ENVIRONMENT_INITIALIZER } from './core/environment-init';
 
 export const appConfig: ApplicationConfig = {
-  providers: [provideRouter(routes), provideHttpClient()]
+  providers: [provideRouter(routes), provideHttpClient(), ...ENVIRONMENT_INITIALIZER]
 };
 
diff --git a/src/app/core/environment-init.ts b/src/app/core/environment-init.ts
new file mode 100644
index 0000000000000000000000000000000000000000..430a1e5b255ddebff4e3cb76f4d0b81d50a2b51a
--- /dev/null
+++ b/src/app/core/environment-init.ts
@@ -0,0 +1,32 @@
+import { APP_INITIALIZER, InjectionToken, Provider } from "@angular/core";
+import { lastValueFrom, map, ReplaySubject } from "rxjs";
+import { merge } from "lodash";
+import {HttpClient} from '@angular/common/http';
+import { environment } from "src/environments/environment";
+import { Environment } from "src/environments/environment.model";
+
+export const ENVIRONMENT = new InjectionToken('env');
+const environmentSubject = new ReplaySubject<Environment>(1);
+const environment$ = environmentSubject.asObservable();
+
+export const ENVIRONMENT_INITIALIZER: Provider[] = [
+    {
+        provide: APP_INITIALIZER,
+        useFactory: environmentInitializer,
+        multi: true,
+        deps: [HttpClient],
+    },
+    { provide: ENVIRONMENT, useValue: environment$ },
+];
+
+export function environmentInitializer(
+    http: HttpClient
+): () => Promise<Environment> {
+    return () => {
+        let res = http
+            .get<Environment>('/assets/environment.json')
+            .pipe(map(e => merge(environment, e)));
+        res.subscribe(environmentSubject);
+        return lastValueFrom(res);
+    };
+}
\ No newline at end of file
diff --git a/src/assets/environment.json b/src/assets/environment.json
new file mode 100644
index 0000000000000000000000000000000000000000..77c139cba33a23c84ec0f1131fef6db3dd9ac715
--- /dev/null
+++ b/src/assets/environment.json
@@ -0,0 +1,4 @@
+{
+    "production": false,
+    "url": "http://api.allocine.takima.dev"
+}
diff --git a/src/environments/environment.model.ts b/src/environments/environment.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..13f6de5cf9434c4c8cf5898ab48180daac82f44f
--- /dev/null
+++ b/src/environments/environment.model.ts
@@ -0,0 +1,4 @@
+export interface Environment {
+    production: boolean;
+    url: string;
+}
\ No newline at end of file
diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts
index c42434a33cea9b29512219a01563aecf589d1ed2..4474ddec3956eead5927ce81af5d424195c305a2 100644
--- a/src/environments/environment.prod.ts
+++ b/src/environments/environment.prod.ts
@@ -1,4 +1,6 @@
-export const environment = {
+import { Environment } from "./environment.model";
+
+export const environment: Environment = {
   production: true,
   url: 'localhost:8080'
 };
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index e7a4407ae01a81424aa1bc39330e7929a0c7c1bf..f4e884c7ae3e92c4fa9e9a1a3438eda4692f876e 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -1,5 +1,6 @@
+import { Environment } from "./environment.model";
 
-export const environment = {
+export const environment: Environment = {
   production: false,
   url: 'http://localhost:8080'
 };