diff --git a/.env.default b/.env.default
new file mode 100644
index 0000000000000000000000000000000000000000..179f050d53ff35ac69f23f832ea6f07123cd8ae4
--- /dev/null
+++ b/.env.default
@@ -0,0 +1,2 @@
+PGADMIN_DEFAULT_EMAIL="tubeswbd@tubes.com"
+PGADMIN_DEFAULT_PASSWORD="tubes1Password"
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..2eea525d885d5148108f6f3a9a8613863f783d36
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.env
\ No newline at end of file
diff --git a/build/build-all.sh b/build/build-all.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9cbdb732f8fd2844138229d4b6249af13fbedf7b
--- /dev/null
+++ b/build/build-all.sh
@@ -0,0 +1,4 @@
+bash build-php.sh
+bash build-spa.sh
+bash build-rest.sh
+bash build-soap.sh
\ No newline at end of file
diff --git a/build/build-php.sh b/build/build-php.sh
new file mode 100644
index 0000000000000000000000000000000000000000..af3e137cce9dc99c0bb2db435aad163bfc40f70e
--- /dev/null
+++ b/build/build-php.sh
@@ -0,0 +1 @@
+docker build -t php-app ../../php-app
\ No newline at end of file
diff --git a/build/build-rest.sh b/build/build-rest.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a43ad7c9734d8d73bc5fd9843643bebd07999cc8
--- /dev/null
+++ b/build/build-rest.sh
@@ -0,0 +1 @@
+docker build -t rest-service:latest ../../rest-service
\ No newline at end of file
diff --git a/build/build-soap.sh b/build/build-soap.sh
new file mode 100644
index 0000000000000000000000000000000000000000..95b82ccc052ea18593f6584fd4813bb7f4a925c9
--- /dev/null
+++ b/build/build-soap.sh
@@ -0,0 +1 @@
+docker build -t soap-service:latest ../../soap-service
\ No newline at end of file
diff --git a/build/build-spa.sh b/build/build-spa.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d8501a82c8c0430b0bcca46ce0a1cfd51b92bb0d
--- /dev/null
+++ b/build/build-spa.sh
@@ -0,0 +1 @@
+docker build -t client-spa:latest ../../client-spa
\ No newline at end of file
diff --git a/compile-env.sh b/compile-env.sh
new file mode 100644
index 0000000000000000000000000000000000000000..49df76a454969dc0af5e6219efae387542430d2a
--- /dev/null
+++ b/compile-env.sh
@@ -0,0 +1,5 @@
+cat ../php-app/.env.default \
+    ../client-spa/.env.default \
+    ../rest-service/.env.default \
+    ../soap-service/.env.default \
+    .env.default > .env
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..4a73eff77269a3b99291dc8ae35f0b86df7b2e78
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,52 @@
+services:
+  # PHP App
+  php-web:
+    extends:
+      file: ../php-app/docker-compose.yml
+      service: php-web
+    env_file: .env
+
+  php-postgres:
+    extends:
+      file: ../php-app/docker-compose.yml
+      service: php-postgres
+    env_file: .env
+
+  # SPA
+  spa-web:
+    extends:
+      file: ../client-spa/docker-compose.yml
+      service: spa-web
+    env_file: .env
+
+  # REST Service
+  rest-service:
+    extends:
+      file: ../rest-service/docker-compose.yml
+      service: rest-service
+    env_file: .env
+
+  rest-db:
+    extends:
+      file: ../rest-service/docker-compose.yml
+      service: rest-db
+    env_file: .env
+
+  # SOAP Service
+  # soap-service:
+  #   extends:
+  #     file: ../soap-service/docker-compose.yml
+  #     service: soap-service
+
+  # soap-db:
+  #   extends:
+  #     file: ../soap-service/docker-compose.yml
+  #     service: soap-db
+
+  # PostgreSQL pgAdmin panel accessible at http://localhost:16543/
+  pgadmin-compose:
+    image: dpage/pgadmin4
+    restart: always
+    env_file: .env
+    ports:
+      - "16543:80"
\ No newline at end of file