diff --git a/goofy-server/pom.xml b/goofy-server/pom.xml
index 1eae5f8dddc925e8767c5f353d6af54a657d0c29..7131e6c50f49a3a035105e57f79eb8762e59c903 100644
--- a/goofy-server/pom.xml
+++ b/goofy-server/pom.xml
@@ -63,7 +63,7 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-security</artifactId>
 		</dependency>
-		
+
 		<dependency>
 			<groupId>org.keycloak</groupId>
 			<artifactId>keycloak-spring-boot-starter</artifactId>
@@ -73,6 +73,12 @@
 			<artifactId>keycloak-admin-client</artifactId>
 		</dependency>
 
+		<dependency>
+			<groupId>com.graphql-java</groupId>
+			<artifactId>graphql-java-spring-boot-starter-webmvc</artifactId>
+			<version>2.0</version>
+		</dependency>
+
 		<!-- own projects -->
 		<dependency>
 			<groupId>de.itvsh.ozg.pluto</groupId>
@@ -84,7 +90,7 @@
 			<groupId>org.mapstruct</groupId>
 			<artifactId>mapstruct</artifactId>
 		</dependency>
-		
+
 		<!-- aspectJ -->
 		<dependency>
 			<groupId>org.aspectj</groupId>
@@ -205,19 +211,19 @@
 							-Amapstruct.unmappedTargetPolicy=ERROR
 						</compilerArg>
 						<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
-			            <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
-			            <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
-			            <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
-			            <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
-			            <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
-			            <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
-			            <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
-			            <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
-			            <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg>
+						<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
+						<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
+						<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
+						<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
+						<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
+						<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
+						<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
+						<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
+						<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg>
 					</compilerArgs>
 				</configuration>
 			</plugin>
-			
+
 			<plugin>
 				<groupId>org.jacoco</groupId>
 				<artifactId>jacoco-maven-plugin</artifactId>
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLDataFetchers.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLDataFetchers.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd5fdd257d50faa7a5a3993fc3474681ebbdb6d0
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLDataFetchers.java
@@ -0,0 +1,69 @@
+package de.itvsh.goofy.kommentar;
+
+import com.google.common.collect.ImmutableMap;
+import graphql.schema.DataFetcher;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@Component
+public class GraphQLDataFetchers {
+
+    private static List<Map<String, String>> books = Arrays.asList(
+            ImmutableMap.of("id", "book-1",
+                    "name", "Harry Potter and the Philosopher's Stone",
+                    "pageCount", "223",
+                    "authorId", "author-1"),
+            ImmutableMap.of("id", "book-2",
+                    "name", "Moby Dick",
+                    "pageCount", "635",
+                    "authorId", "author-2"),
+            ImmutableMap.of("id", "book-3",
+                    "name", "Interview with the vampire",
+                    "pageCount", "371",
+                    "authorId", "author-3")
+    );
+
+    private static List<Map<String, String>> authors = Arrays.asList(
+            ImmutableMap.of("id", "author-1",
+                    "firstName", "Joanne",
+                    "lastName", "Rowling"),
+            ImmutableMap.of("id", "author-2",
+                    "firstName", "Herman",
+                    "lastName", "Melville"),
+            ImmutableMap.of("id", "author-3",
+                    "firstName", "Anne",
+                    "lastName", "Rice")
+    );
+
+    public DataFetcher getBookByIdDataFetcher() {
+        return dataFetchingEnvironment -> {
+            String bookId = dataFetchingEnvironment.getArgument("id");
+            return books
+                    .stream()
+                    .filter(book -> book.get("id").equals(bookId))
+                    .findFirst()
+                    .orElse(null);
+        };
+    }
+
+    public DataFetcher getAuthorDataFetcher() {
+        return dataFetchingEnvironment -> {
+            Map<String,String> book = dataFetchingEnvironment.getSource();
+            String authorId = book.get("authorId");
+            return authors
+                    .stream()
+                    .filter(author -> author.get("id").equals(authorId))
+                    .findFirst()
+                    .orElse(null);
+        };
+    }
+
+    public DataFetcher getGreetingDataFetcher() {
+        return dataFetchingEnvironment -> {
+            return "Hello World";
+        };
+    }
+}
\ No newline at end of file
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLProvider.java b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..887a1c790e3bf9f886eb91f3c7446753844d3d51
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/kommentar/GraphQLProvider.java
@@ -0,0 +1,58 @@
+package de.itvsh.goofy.kommentar;
+
+import com.google.common.base.Charsets;
+import com.google.common.io.Resources;
+import graphql.GraphQL;
+import graphql.schema.GraphQLSchema;
+import graphql.schema.idl.RuntimeWiring;
+import graphql.schema.idl.SchemaGenerator;
+import graphql.schema.idl.SchemaParser;
+import graphql.schema.idl.TypeDefinitionRegistry;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.io.IOException;
+import java.net.URL;
+
+import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring;
+
+@Component
+public class GraphQLProvider {
+
+    private GraphQL graphQL;
+    @Autowired
+    GraphQLDataFetchers graphQLDataFetchers;
+
+    @Bean
+    public GraphQL graphQL() {
+        return graphQL;
+    }
+
+    @PostConstruct
+    public void init() throws IOException {
+        URL url = Resources.getResource("schema.graphqls");
+        String sdl = Resources.toString(url, Charsets.UTF_8);
+        GraphQLSchema graphQLSchema = buildSchema(sdl);
+        this.graphQL = GraphQL.newGraphQL(graphQLSchema).build();
+    }
+
+    private GraphQLSchema buildSchema(String sdl) {
+        TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(sdl);
+        RuntimeWiring runtimeWiring = buildWiring();
+        SchemaGenerator schemaGenerator = new SchemaGenerator();
+        return schemaGenerator.makeExecutableSchema(typeRegistry, runtimeWiring);
+    }
+
+    private RuntimeWiring buildWiring() {
+        return RuntimeWiring.newRuntimeWiring()
+                /*.type(newTypeWiring("Query")
+                        .dataFetcher("bookById", graphQLDataFetchers.getBookByIdDataFetcher()))
+                .type(newTypeWiring("Book")
+                        .dataFetcher("author", graphQLDataFetchers.getAuthorDataFetcher()))*/
+                .type(newTypeWiring("Query")
+                        .dataFetcher("greeting", graphQLDataFetchers.getGreetingDataFetcher()))
+                .build();
+    }
+}
\ No newline at end of file
diff --git a/goofy-server/src/main/resources/schema.graphqls b/goofy-server/src/main/resources/schema.graphqls
new file mode 100644
index 0000000000000000000000000000000000000000..8f3f9ebb0785a7e0320c2817648c451560166540
--- /dev/null
+++ b/goofy-server/src/main/resources/schema.graphqls
@@ -0,0 +1,3 @@
+type Query {
+	greeting: String
+}
\ No newline at end of file