Add linter
diff --git a/core/kg/Makefile b/core/kg/Makefile
new file mode 100644
index 0000000..c962617
--- /dev/null
+++ b/core/kg/Makefile
@@ -0,0 +1,67 @@
+GO ?= $(shell command -v go 2> /dev/null)
+GO_TEST_FLAGS ?= -race
+
+export GO111MODULE=on
+
+MINIMUM_SUPPORTED_GO_MAJOR_VERSION = 1
+MINIMUM_SUPPORTED_GO_MINOR_VERSION = 14
+GO_MAJOR_VERSION = $(shell $(GO) version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f1)
+GO_MINOR_VERSION = $(shell $(GO) version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f2)
+GO_VERSION_VALIDATION_ERR_MSG = Golang version is not supported, please update to at least $(MINIMUM_SUPPORTED_GO_MAJOR_VERSION).$(MINIMUM_SUPPORTED_GO_MINOR_VERSION)
+
+BUILDER_GOOS_GOARCH="$(shell $(GO) env GOOS)_$(shell $(GO) env GOARCH)"
+
+## Define the default target (make all)
+.PHONY: default
+default: all
+
+## Checks the code style, tests, runs the code.
+.PHONY: all
+all: check-style test run
+
+## Runs eslint and golangci-lint
+.PHONY: check-style
+check-style:
+	@if ! [ -x "$$(command -v golangci-lint)" ]; then \
+		echo "golangci-lint is not installed. Please see https://github.com/golangci/golangci-lint#install for installation instructions."; \
+		exit 1; \
+	fi; \
+
+	@echo Running golangci-lint
+	golangci-lint run ./...
+
+## Runs unit tests.
+.PHONY: test
+test:
+	@echo Running unit tests
+	$(GO) test -v $(GO_TEST_FLAGS) ./...
+
+## Creates a coverage report
+.PHONY: coverage
+coverage:
+	$(GO) test $(GO_TEST_FLAGS) -coverprofile=coverage.txt ./...
+	$(GO) tool cover -html=coverage.txt
+
+## Clean removes all artifacts.
+.PHONY: clean
+clean:
+	rm -fr coverage.txt
+	rm -fr server.log
+
+.PHONY: run
+run: validate-go-version
+	@echo Running Knowledge Graph services
+
+	$(GO) run ./cmd/
+
+.PHONY: validate-go-version
+validate-go-version: ## Validates the installed version of go against minimum requirement.
+	@if [ $(GO_MAJOR_VERSION) -gt $(MINIMUM_SUPPORTED_GO_MAJOR_VERSION) ]; then \
+		exit 0 ;\
+	elif [ $(GO_MAJOR_VERSION) -lt $(MINIMUM_SUPPORTED_GO_MAJOR_VERSION) ]; then \
+		echo '$(GO_VERSION_VALIDATION_ERR_MSG)';\
+		exit 1; \
+	elif [ $(GO_MINOR_VERSION) -lt $(MINIMUM_SUPPORTED_GO_MINOR_VERSION) ] ; then \
+		echo '$(GO_VERSION_VALIDATION_ERR_MSG)';\
+		exit 1; \
+	fi
\ No newline at end of file