diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..9f11b755a17d8192c60f61cb17b8902dffbd9f23
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.idea/
diff --git a/client/client.go b/client/client.go
new file mode 100644
index 0000000000000000000000000000000000000000..da13c8ef3ca33e1788a7b9560e0ade4e46b5f6f6
--- /dev/null
+++ b/client/client.go
@@ -0,0 +1 @@
+package client
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000000000000000000000000000000000000..83bdda5247a9da4d6d0e8ca3bdf3405a6548fe84
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,3 @@
+module freenet
+
+go 1.19
diff --git a/helper/types.go b/helper/types.go
new file mode 100644
index 0000000000000000000000000000000000000000..258e5cf460094668adacc8faec698625c903072f
--- /dev/null
+++ b/helper/types.go
@@ -0,0 +1,39 @@
+package helper
+
+import "fmt"
+
+type Node struct {
+	Resource Resource `json:"resource"`
+	Storage  Storage  `json:"storage"`
+}
+
+type Resource struct {
+	Name    string `json:"name"`
+	Address string `json:"address"`
+}
+
+type Storage struct {
+	Data []StorageElement `json:"data"`
+}
+
+type StorageElement struct {
+	Id       int `json:"id"`
+	Resource `json:"resource"`
+}
+
+func (r Resource) String() string {
+	return fmt.Sprintf("Resource{Name=%s,Address=%s}", r.Name, r.Address)
+}
+
+func (se StorageElement) String() string {
+	return fmt.Sprintf("StorageElement{Id=%d,Resource=%s}", se.Id, se.Resource.String())
+}
+
+func (s Storage) String() string {
+	output := "Storage{\n"
+	for _, se := range s.Data {
+		output += fmt.Sprintf("%s\n", se.String())
+	}
+	output += "}"
+	return output
+}
diff --git a/server/server.go b/server/server.go
new file mode 100644
index 0000000000000000000000000000000000000000..e60c2a82adc9fde6d92af0be80f872e0995d7d03
--- /dev/null
+++ b/server/server.go
@@ -0,0 +1,26 @@
+package server
+
+import (
+	"fmt"
+	"freenet/helper"
+)
+
+func main() {
+	resource := helper.Resource{
+		Name:    "a",
+		Address: "127.0.0.10",
+	}
+	storageElement := helper.StorageElement{
+		Id:       15,
+		Resource: resource,
+	}
+
+	elements := make([]helper.StorageElement, 1)
+	elements = append(elements, storageElement)
+
+	node := helper.Node{
+		Resource: resource,
+		Storage:  helper.Storage{Data: elements},
+	}
+	fmt.Printf(node)
+}