diff --git a/charts/app-runner/templates/install.yaml b/charts/app-runner/templates/install.yaml
index f89cc79..1e22086 100644
--- a/charts/app-runner/templates/install.yaml
+++ b/charts/app-runner/templates/install.yaml
@@ -51,6 +51,8 @@
 metadata:
   name: app-app
   namespace: {{ .Release.Namespace }}
+  annotations:
+    dodo.cloud/config-checksum: {{ sha256sum .Values.runCfg }}
 spec:
   selector:
     matchLabels:
@@ -60,6 +62,8 @@
     metadata:
       labels:
         app: app-app
+      annotations:
+        dodo.cloud/config-checksum: {{ sha256sum .Values.runCfg }}
     spec:
       runtimeClassName: {{ .Values.runtimeClassName }}
       volumes:
diff --git a/core/installer/app_configs/app_base.cue b/core/installer/app_configs/app_base.cue
index 9860c6c..4954bef 100644
--- a/core/installer/app_configs/app_base.cue
+++ b/core/installer/app_configs/app_base.cue
@@ -118,6 +118,11 @@
             "\(name)": #Image & image
         }
     }
+    for _, value in _postgresql {
+        for name, image in value.out.images {
+            "\(name)": #Image & image
+        }
+    }
 }
 
 charts: {}
@@ -134,6 +139,13 @@
             }
         }
     }
+    for _, value in _postgresql {
+        for name, chart in value.out.charts {
+            "\(name)": #Chart & chart & {
+                name: name
+            }
+        }
+    }
 }
 charts: {
 	volume: {
@@ -144,6 +156,104 @@
 	}
 }
 
+#PostgreSQL: {
+	name: string
+	version: "15.3"
+	initSQL: string | *""
+	size: string | *"1Gi"
+
+	_size: size
+	_volumeClaimName: "postgresql"
+
+	out: {
+		images: {
+			postgres: #Image & {
+				repository: "library"
+				name: "postgres"
+				tag: version
+				pullPolicy: "IfNotPresent"
+			}
+		}
+		charts: {
+			volume: #Chart & {
+				kind: "GitRepository"
+				address: "https://code.v1.dodo.cloud/helm-charts"
+				branch: "main"
+				path: "charts/volumes"
+			}
+			postgres: #Chart & {
+				kind: "GitRepository"
+				address: "https://code.v1.dodo.cloud/helm-charts"
+				branch: "main"
+				path: "charts/postgresql"
+			}
+		}
+		charts: {
+			for key, value in charts {
+				"\(key)": #Chart & value & {
+					name: key
+				}
+			}
+		}
+		helm: {
+			"volume-name": {
+				chart: charts.volume
+				values: {
+					name: _volumeClaimName
+					size: _size
+				}
+			}
+			postgres: {
+				chart: charts.postgres
+				values: {
+					fullnameOverride: "postgres"
+					image: {
+						registry: images.postgres.registry
+						repository: images.postgres.imageName
+						tag: images.postgres.tag
+						pullPolicy: images.postgres.pullPolicy
+					}
+					auth: {
+						username: "postgres"
+						password: "postgres"
+						database: "postgres"
+					}
+					service: {
+						type: "ClusterIP"
+						port: 5432
+					}
+					primary: {
+						persistence: existingClaim: _volumeClaimName
+						if initSQL != "" {
+							initdb: scripts: "init.sql": initSQL
+						}
+						securityContext: {
+							enabled: true
+							fsGroup: 0
+						}
+						containerSecurityContext: {
+							enabled: true
+							runAsUser: 0
+						}
+					}
+					volumePermissions: securityContext: runAsUser: 0
+				}
+			}
+		}
+	}
+}
+
+_ingressValidate: {}
+
+postgresql: {}
+_postgresql: {
+	for key, value in postgresql {
+		"\(key)": #PostgreSQL & value & {
+			name: key
+		}
+	}
+}
+
 localCharts: {
 	for key, _ in charts {
 		"\(key)": {
@@ -184,6 +294,13 @@
 			}
 		}
 	}
+	for key, value in _postgresql {
+		for post, postValue in value.out.helm {
+			"\(key)-\(post)": #Helm & postValue & {
+				name: "\(key)-\(post)"
+			}
+		}
+	}
 }
 
 #HelmRelease: {
diff --git a/core/installer/app_configs/app_global_env.cue b/core/installer/app_configs/app_global_env.cue
index 26e8a99..c53df4a 100644
--- a/core/installer/app_configs/app_global_env.cue
+++ b/core/installer/app_configs/app_global_env.cue
@@ -128,7 +128,6 @@
 }
 
 ingress: {}
-
 _ingressValidate: {
 	for key, value in ingress {
 		"\(key)": #Ingress & value
diff --git a/core/installer/app_configs/app_global_infra.cue b/core/installer/app_configs/app_global_infra.cue
index 937d490..b3069d0 100644
--- a/core/installer/app_configs/app_global_infra.cue
+++ b/core/installer/app_configs/app_global_infra.cue
@@ -19,7 +19,3 @@
 }
 
 networks: #Networks
-
-ingress: {}
-_ingressValidate: {}
-
diff --git a/core/installer/app_configs/dodo_app.cue b/core/installer/app_configs/dodo_app.cue
index 2a605e0..8a67645 100644
--- a/core/installer/app_configs/dodo_app.cue
+++ b/core/installer/app_configs/dodo_app.cue
@@ -24,6 +24,10 @@
 	...
 }
 
+#PostgreSQLs: {
+	...
+}
+
 app: {
 	volumes: {
 		for key, value in volumes {
@@ -32,6 +36,13 @@
 			}
 		}
 	}
+	postgresql: {
+		for key, value in postgresql {
+			"\(key)": #PostgreSQL & value & {
+				name: key
+			}
+		}
+	}
 }
 
 #Command: {
@@ -50,6 +61,7 @@
 	run: string | *"main.go"
 	ingress: #AppIngress
 	volumes: #Volumes
+	postgresql: #PostgreSQLs
 	port: int | *8080
 	rootDir: _appDir
 
@@ -66,6 +78,18 @@
 			for k, v in volumes {
 				"DODO_VOLUME_\(strings.ToUpper(k))=/dodo-volume/\(v.name)"
 			}
+			for k, v in postgresql {
+				"DODO_POSTGRESQL_\(strings.ToUpper(k))_ADDRESS=\(v.name).\(release.namespace).svc.cluster.local"
+			}
+			for k, v in postgresql {
+				"DODO_POSTGRESQL_\(strings.ToUpper(k))_USERNAME=postgres"
+			}
+			for k, v in postgresql {
+				"DODO_POSTGRESQL_\(strings.ToUpper(k))_PASSWORD=postgres"
+			}
+			for k, v in postgresql {
+				"DODO_POSTGRESQL_\(strings.ToUpper(k))_DATABASE=postgres"
+			}
 	    ]
 	}]
 }
@@ -88,6 +112,7 @@
 	type: _hugoLatest
 	ingress: #AppIngress
 	volumes: {}
+	postgresql: {}
 	port: int | *8080
 	rootDir: _appDir
 
@@ -115,6 +140,7 @@
 	type: "php:8.2-apache"
 	ingress: #AppIngress
 	volumes: {}
+	postgresql: {}
 	port: int | *80
 	rootDir: "/var/www/html"
 
@@ -168,6 +194,7 @@
 }
 
 volumes: app.volumes
+postgresql: app.postgresql
 
 helm: {
 	app: {
diff --git a/core/installer/app_configs/testapp.cue b/core/installer/app_configs/testapp.cue
index 8201ff6..7ab6829 100644
--- a/core/installer/app_configs/testapp.cue
+++ b/core/installer/app_configs/testapp.cue
@@ -6,7 +6,16 @@
 		subdomain: "testapp"
 		auth: enabled: false
 	}
-	volumes: data: size: "1Gi"
+	volumes: {
+		data: {
+			size: "1Gi"
+		}
+	}
+	postgresql: {
+		foo: {
+			size: "2Gi"
+		}
+	}
 }
 
 // do create app --type=go[1.22.0] [--run-cmd=(*default main.go)]
diff --git a/core/installer/app_test.go b/core/installer/app_test.go
index 53962fe..bf0ceac 100644
--- a/core/installer/app_test.go
+++ b/core/installer/app_test.go
@@ -5,6 +5,8 @@
 	"fmt"
 	"net"
 	"testing"
+
+	"cuelang.org/go/cue/errors"
 )
 
 var (
@@ -341,8 +343,12 @@
 func TestPCloudApp(t *testing.T) {
 	app, err := NewDodoApp(testAppCue)
 	if err != nil {
+		for _, e := range errors.Errors(err) {
+			t.Log(e)
+		}
 		t.Fatal(err)
 	}
+
 	release := Release{
 		Namespace:     "foo",
 		AppInstanceId: "foo-bar",
diff --git a/core/installer/welcome/app-tmpl/golang-1.22.0/app.cue.gotmpl b/core/installer/welcome/app-tmpl/golang-1.22.0/app.cue.gotmpl
deleted file mode 100755
index 8cec919..0000000
--- a/core/installer/welcome/app-tmpl/golang-1.22.0/app.cue.gotmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-app: {
-	type: "golang:1.22.0"
-	run: "main.go"
-	ingress: {
-		network: "{{ .Network.Name }}"
-		subdomain: "{{ .Subdomain }}"
-		auth: enabled: false
-	}
-}
diff --git a/core/installer/welcome/app-tmpl/golang-1.22.0/go.mod.gotmpl b/core/installer/welcome/app-tmpl/golang-1.22.0/go.mod.gotmpl
deleted file mode 100755
index d526dcd..0000000
--- a/core/installer/welcome/app-tmpl/golang-1.22.0/go.mod.gotmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-module dodo.app
-
-go 1.22.0
\ No newline at end of file
diff --git a/core/installer/welcome/app-tmpl/golang-1.22.0/main.go b/core/installer/welcome/app-tmpl/golang-1.22.0/main.go
deleted file mode 100755
index 28c1368..0000000
--- a/core/installer/welcome/app-tmpl/golang-1.22.0/main.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package main
-
-import (
-	"flag"
-	"fmt"
-	"log"
-	"net/http"
-)
-
-var port = flag.Int("port", 8080, "Port to listen on")
-
-func handler(w http.ResponseWriter, r *http.Request) {
-	fmt.Fprintln(w, "Hello from Dodo App!")
-}
-
-func main() {
-	flag.Parse()
-	http.HandleFunc("/", handler)
-	log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", *port), nil))
-}
diff --git a/core/installer/welcome/app_tmpl_test.go b/core/installer/welcome/app_tmpl_test.go
index ddd142c..daaf4c8 100644
--- a/core/installer/welcome/app_tmpl_test.go
+++ b/core/installer/welcome/app_tmpl_test.go
@@ -44,25 +44,6 @@
 	}
 }
 
-func TestAppTmplGolang1220(t *testing.T) {
-	d, err := fs.Sub(appTmpl, "app-tmpl")
-	if err != nil {
-		t.Fatal(err)
-	}
-	store, err := NewAppTmplStoreFS(d)
-	if err != nil {
-		t.Fatal(err)
-	}
-	a, err := store.Find("golang-1.22.0")
-	if err != nil {
-		t.Fatal(err)
-	}
-	out := soft.NewBillyRepoFS(memfs.New())
-	if err := a.Render(network, "testapp", out); err != nil {
-		t.Fatal(err)
-	}
-}
-
 func TestAppTmplHugoLatest(t *testing.T) {
 	d, err := fs.Sub(appTmpl, "app-tmpl")
 	if err != nil {
diff --git a/core/installer/welcome/dodo_app.go b/core/installer/welcome/dodo_app.go
index 7153f20..7c35d69 100644
--- a/core/installer/welcome/dodo_app.go
+++ b/core/installer/welcome/dodo_app.go
@@ -509,6 +509,7 @@
 			return
 		}
 		if err := s.updateDodoApp(instanceAppStatus, req.Repository.Name, s.appConfigs[req.Repository.Name].Namespace, networks); err != nil {
+			fmt.Printf("Error: %s\n", err.Error())
 			if err := s.st.CreateCommit(req.Repository.Name, req.After, commitMsg, err.Error()); err != nil {
 				fmt.Printf("Error: %s\n", err.Error())
 			}
