diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000000000000000000000000000000000000..b0dc191670b63b8815e9b19e72c4cd560704573e
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,5 @@
+module gitlab.reutlingen-university.de/albrecht/myaktion-go
+
+go 1.20
+
+require github.com/gorilla/mux v1.8.0
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000000000000000000000000000000000000..535028803d222b0e4e9174f56529c0ed9fece4e0
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,2 @@
+github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
diff --git a/main/main.go b/main/main.go
new file mode 100644
index 0000000000000000000000000000000000000000..1f2f41b393c63ff5d743fbaa5ab9f0f691e9260f
--- /dev/null
+++ b/main/main.go
@@ -0,0 +1,20 @@
+package main
+
+import (
+	"log"
+	"net/http"
+
+	"github.com/gorilla/mux"
+	"gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/handler"
+)
+
+//"gitlab.reutlingen-university.de/albrecht/myaktion-go/src/myaktion/model"
+
+func main() {
+	log.Println("Starting My-Aktion API server")
+	router := mux.NewRouter()
+	router.HandleFunc("/health", handler.Health).Methods("GET")
+	if err := http.ListenAndServe(":8000", router); err != nil {
+		log.Fatal(err)
+	}
+}
diff --git a/src/myaktion/handler/health.go b/src/myaktion/handler/health.go
new file mode 100644
index 0000000000000000000000000000000000000000..bb62dc721e584bf5bd0959ed81692ba935a289e5
--- /dev/null
+++ b/src/myaktion/handler/health.go
@@ -0,0 +1,11 @@
+package handler
+
+import (
+	"io"
+	"net/http"
+)
+
+func Health(w http.ResponseWriter, r *http.Request) {
+	w.Header().Set("Content-Type", "application/json")
+	io.WriteString(w, `{"alive": true}`)
+}
diff --git a/src/myaktion/main.go b/src/myaktion/main.go
deleted file mode 100644
index 89490cd87acfb8fb3175676c894480818b6a9e71..0000000000000000000000000000000000000000
--- a/src/myaktion/main.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package main
-
-import "fmt"
-
-func main() {
-	fmt.Println("test")
-}
diff --git a/src/myaktion/model/account.go b/src/myaktion/model/account.go
new file mode 100644
index 0000000000000000000000000000000000000000..d2e74b4cdd30b686069fcdf3bb5de02e6c677189
--- /dev/null
+++ b/src/myaktion/model/account.go
@@ -0,0 +1,7 @@
+package model
+
+type Account struct {
+	Name     string
+	BankName string
+	Number   string
+}
diff --git a/src/myaktion/model/campaign.go b/src/myaktion/model/campaign.go
new file mode 100644
index 0000000000000000000000000000000000000000..233c9c104e172c06cc9f185507c4f7a652f55e0b
--- /dev/null
+++ b/src/myaktion/model/campaign.go
@@ -0,0 +1,11 @@
+package model
+
+type Camaign struct {
+	Name               string
+	OrganizerName      string
+	TargetAmount       float64
+	DonationMinimum    float64
+	AmountDonatedSoFar float64
+	Donations          []Donation
+	Account            Account
+}
diff --git a/src/myaktion/model/donation.go b/src/myaktion/model/donation.go
new file mode 100644
index 0000000000000000000000000000000000000000..e452f9660ca77d5a1107136ee53cdd2c320c173b
--- /dev/null
+++ b/src/myaktion/model/donation.go
@@ -0,0 +1,16 @@
+package model
+
+type Donation struct {
+	Amount           float64
+	DonorName        string
+	ReceiptRequested bool
+	Account          Account
+	Status           Status
+}
+
+type Status string
+
+const (
+	Transferred Status = "Transferred"
+	In_Process  Status = "In_Process"
+)