diff --git a/.env_dist b/.env_dist
new file mode 100644
index 0000000000000000000000000000000000000000..246780d828c247bfb433096964e6172618996d6d
--- /dev/null
+++ b/.env_dist
@@ -0,0 +1,13 @@
+# Modele du fichier '.env', definissant variables "d'environnement" utilisees dans divers fichiers de src/ et de db/.
+# (Ces variables sont chargees par le package dotenv dans `process.env`, dans les fichiers .js et .ts ou dotenv.config() est appele)
+# Copier ce fichier en le renommant '.env', (le placer a la racine du repo,) et modifier les champs comme il faut.
+
+TARGET_ENV=development
+PORT=3000
+DB_USER=sigma
+DB_PASSWD=sigmapw
+DB_HOST=129.201.104.10
+#DB_HOST=127.0.0.1 # for devs using a port forwarding
+FRONTEND_SERVER_URL=http://localhost:8888
+#LDAP_URI= (loaded from ldap_config.json!)
+#TEST_PORT=3001 (used only in tests/, not yet implemented)
diff --git a/db/knex_router.ts b/db/knex_router.ts
index 34962cb8ef2c08b4e5682e2d959e2e4f63f2ca5f..3ce9bf2b228a4d96042af36d9033e3e280147a1e 100644
--- a/db/knex_router.ts
+++ b/db/knex_router.ts
@@ -3,7 +3,7 @@
  */
 require('dotenv').config();
 
-const environment = process.env.TARGET_ENV || 'development';
+const environment = process.env.TARGET_ENV;
 export const config = require('./knexfile')[environment];
 
 console.log("Running Knex configuration '%s'", environment);
diff --git a/db/knexfile.js b/db/knexfile.js
index a439284e0e14dd16e2a64f497ccb8cbe580687f0..4f0e7a7db0f00acc94e92efcd3532fc522dee99c 100644
--- a/db/knexfile.js
+++ b/db/knexfile.js
@@ -26,8 +26,8 @@ module.exports = {
         client: 'pg',
         connection: {
             host: 'localhost',
-            user: process.env.DB_USER || 'sigma',
-            password: process.env.DB_PASSWD || 'sigmapw',
+            user: process.env.DB_USER,
+            password: process.env.DB_PASSWD,
             database: 'sigma_dev',
             charset: 'utf8'
         },
@@ -36,9 +36,9 @@ module.exports = {
     staging: {
         client: 'pg',
         connection: {
-            host: process.env.DB_HOST || '129.201.104.10',
-            user: process.env.DB_USER || 'sigma',
-            password: process.env.DB_PASSWD || 'password',
+            host: process.env.DB_HOST,
+            user: process.env.DB_USER,
+            password: process.env.DB_PASSWD,
             database: 'sigma_staging',
             charset: 'utf8'
         },
diff --git a/src/adminview/admin_router.ts b/src/adminview/admin_router.ts
index a7c7ec837767f6d92232018b2d1a6bae29b3a541..736af262de715302cfc603e2ef7e474377e1a24a 100644
--- a/src/adminview/admin_router.ts
+++ b/src/adminview/admin_router.ts
@@ -32,8 +32,11 @@ import flash from 'connect-flash';
 // packages pour l'API REST et pour GraphQL Voyager
 import knex from '../../db/knex_router';
 import { express as graphqlVoyager } from 'graphql-voyager/middleware';
+//loads environment variables from (hidden) .env file
+import dotenv from 'dotenv'; 
+dotenv.config();
 
-let port = process.env.PORT || 3000;
+let port = process.env.PORT;
 
 const whitelist = [
     "magi.karp",
diff --git a/src/app.ts b/src/app.ts
index 3f940daf2604571a868fd4bd9bf418bf95faf85c..b2da46066342f119f90b2b9aed4ea3ee4276870f 100644
--- a/src/app.ts
+++ b/src/app.ts
@@ -28,7 +28,9 @@ import morgan from 'morgan';
 import path from 'path';
 // config des paramètres de connexion au LDAP
 import { ldapConfig, credentialsLdapConfig } from './ldap/internal/config';
-
+//loads environment variables from (hidden) .env file
+import dotenv from 'dotenv';
+dotenv.config();
 
 /**
  * @desc Création de l'application Express et setup de middlewares basiques
@@ -45,7 +47,7 @@ app.disable('x-powered-by');
 // use morgan (HTTP request logger middleware)
 app.use(morgan('dev'));
 
-const FRONTEND_SERVER_URL = process.env.FRONTEND_SERVER_URL || 'http://localhost:8888';
+const FRONTEND_SERVER_URL = process.env.FRONTEND_SERVER_URL;
 // Options de configuration pour le _middleware_ `cors`.
 // CORS = Cross Origin Resource Sharing
 const corsOptions = {
diff --git a/src/index.ts b/src/index.ts
index f55c10752cdc50e6dc083b745c74d68f7b3eeb6b..e0aa4dd5fa60f18298a95c0c42482efaf2c62b89 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -7,7 +7,7 @@ dotenv.config();
 import app from './app';
 import colors from 'colors';
 
-const port = process.env.PORT || 3000;
+const port = process.env.PORT;
 const hostnameConfigMap = {
     'development': 'localhost',
     'staging': '0.0.0.0',
diff --git a/src/ldap/internal/config.ts b/src/ldap/internal/config.ts
index ad76623e915817caa1234b39cade12b0ae18b5c7..d2b84df180db49fd4a92f407999006d1b0989f26 100644
--- a/src/ldap/internal/config.ts
+++ b/src/ldap/internal/config.ts
@@ -12,13 +12,18 @@
 import fs from 'fs';
 import path from 'path';
 import colors from 'colors';
-// Point central ; tous les champs de la BDD sont 'cachés' dans config.json et pas visibles directement
+import dotenv from 'dotenv';
+dotenv.config();
+
+// Point central ; tous les champs de la BDD sont 'cachés' dans ldap_config.json et pas visibles directement
 let path_config = path.resolve(__dirname,'..', '..', '..', 'ldap_config.json');
 console.log(colors.cyan("Loading LDAP config file from "+path_config));
 export const ldapConfig = JSON.parse(fs.readFileSync(path_config).toString());
+
 let path_credentials = path.resolve(__dirname,'..', '..', '..', 'ldap_credentials.json')
 console.log(colors.cyan("Loading LDAP credentials from "+path_credentials));
 export const credentialsLdapConfig = JSON.parse(fs.readFileSync(path_credentials).toString());
+
 // Override config server from environment
 if (process.env.LDAP_URI != null) {
     ldapConfig.server = process.env.LDAP_URI;
@@ -26,4 +31,4 @@ if (process.env.LDAP_URI != null) {
 else {
     if (process.env.TARGET_ENV == `production`)     { ldapConfig.server = ldapConfig.server_prod; }
     else                                            { ldapConfig.server = ldapConfig.server_dev; }
-}
\ No newline at end of file
+}