diff --git a/start.sh b/start.sh
index dfb1602d14554f219bbb37b33b11a71d4b7666e1..bc77721777ab776b1bf1edfb77864d669de6e551 100755
--- a/start.sh
+++ b/start.sh
@@ -1,9 +1,13 @@
 #!/bin/bash
 
-function truncateCurrentDirectory {
+function readEnv {
   if [[ -f ".env" ]]; then
     export $(cat .env | xargs) > /dev/null 2>&1
   fi
+}
+
+function truncateCurrentDirectory {
+  readEnv
   rm .* > /dev/null 2>&1
 }
 
@@ -21,19 +25,54 @@ function restoreEnvFile {
 
 function create {
   truncateCurrentDirectory
-  composer create-project ${PROJECT} . --no-interaction
+  if [[ -n ${REPOSITORY} ]]; then
+    composer create-project ${PROJECT} . --no-interaction --repository ${REPOSITORY}
+  else
+    composer create-project ${PROJECT} . --no-interaction
+  fi
   restoreEnvFile
+
+  if [[ -f "docker-compose.yml" ]]; then
+    if [[ -f "web/profiles/contrib/config_installer/config_installer.info.yml" ]]; then
+      # Start container
+      a d4d up
+      drush --no-interaction si config_installer
+
+      # Init site config values
+      if [[ -f "drush/Commands/init_site/init_site.info.yml" ]]; then
+        if [[ -f ".init_site.json" ]]; then
+          drush init_site ../.init_site.json
+        fi
+      fi
+
+      # Dump database
+      if [[ -n ${L3D_DUMP_DB} ]]; then
+        git ignore "/*.sql"
+        drush sql:dump --result-file ../db.sql
+      fi
+    fi
+  fi
+  if [[ -n ${L3D_EXIT} ]]; then
+    exit
+  fi
 }
 
-EXISTING=$(ls -1)
-if [[ ! -n "$EXISTING" ]]; then
+function clone {
+  truncateCurrentDirectory
+  git clone ${REPOSITORY} .
+  composer update
+  restoreEnvFile
+}
+
+function initialSetup {
   echo "Lets start a new project here ..."
   echo ""
   echo "Options to start:"
   echo "    0   none: start with an empty container"
   echo "    1   LakeDrops Drupal 8 project template"
   echo "    2   Drupal's community project template"
-  echo "    3   Existing git repository"
+  echo "    3   Custom project template"
+  echo "    4   Existing git repository"
   echo ""
   echo ""
 
@@ -41,6 +80,7 @@ if [[ ! -n "$EXISTING" ]]; then
       read -p "Choose an option: " OPTION
       case ${OPTION} in
           0 )
+            restoreEnvFile
             break
             ;;
 
@@ -57,12 +97,16 @@ if [[ ! -n "$EXISTING" ]]; then
             ;;
 
           3 )
+            read -p "Custom project template: " PROJECT
+            read -p "Repository URL (optional): " REPOSITORY
+            create
+            break
+            ;;
+
+          4 )
             read -p "Repository URL: " REPOSITORY
             if [[ -n "${REPOSITORY}" ]]; then
-              truncateCurrentDirectory
-              git clone ${REPOSITORY} .
-              composer update
-              restoreEnvFile
+              clone
               break
             fi
             ;;
@@ -72,9 +116,20 @@ if [[ ! -n "$EXISTING" ]]; then
             ;;
       esac
   done
+}
+
+readEnv
+EXISTING=$(ls -1)
+if [[ ! -n "$EXISTING" ]]; then
+  if [[ -n ${PROJECT} ]]; then
+    create
+  elif [[ -n ${REPOSITORY} ]]; then
+    clone
+  else
+    initialSetup
+  fi
 fi
 
-restoreEnvFile
 if [[ -x "${L3DSHELL}" ]]; then
   ${L3DSHELL}
 else