diff --git a/src/json-validator.cpp b/src/json-validator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..20c466e8b50e76f78a068553f5d14514cb386aff
--- /dev/null
+++ b/src/json-validator.cpp
@@ -0,0 +1,86 @@
+#include <iostream>
+#include <iomanip>
+#include <stdbool.h>
+
+#include <libubox/avl.h>
+#include <libubox/avl-cmp.h>
+#include <libubox/blobmsg.h>
+#include <libubox/blobmsg_json.h>
+#include <libubox/utils.h>
+#include <libubus.h>
+#include <glob.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <json-c/json.h>
+#include <json-schema.hpp>
+
+#include "schema.h"
+#include "json-validator.h"
+
+using nlohmann::json;
+using nlohmann::json_uri;
+using nlohmann::json_schema::json_validator;
+
+int schema_validator_destroy(void)
+{
+	schema_flush_objects();
+
+	return 0;
+}
+
+int schema_validator_init(void)
+{
+	schema_setup_json();
+
+	return 0;
+}
+
+bool json_object_validate_schema_inject_definitions(struct json_object *j_object, struct json_object *definitions, struct json_object *j_schema)
+{
+	json_object_object_add(j_object, "definitions", definitions);
+	return json_object_validate_schema(j_object, j_schema);
+}
+
+bool json_object_validate_schema(struct json_object *j_object, struct json_object *j_schema)
+{
+	std::cout << "hello" << std::endl;
+    const char *sch_str, *obj_str;
+
+    obj_str = json_object_get_string(j_object);
+    sch_str = json_object_get_string(j_schema);
+
+	std::cout << "obj_str " << obj_str << std::endl;
+	std::cout << "sch_str " << sch_str << std::endl;
+
+    json sch = json::parse(sch_str);
+    json obj = json::parse(obj_str);
+
+	/* json-parse the schema */
+
+	json_validator validator; // create validator
+
+	try {
+		validator.set_root_schema(sch); // insert root-schema
+	} catch (const std::exception &e) {
+		std::cerr << "Validation of schema failed, here is why: " << e.what() << "\n";
+		return 0;
+	}
+
+	/* json-parse the people - with custom error handler */
+	class custom_error_handler : public nlohmann::json_schema::basic_error_handler
+	{
+		void error(const nlohmann::json::json_pointer &ptr, const json &instance, const std::string &message) override
+		{
+			nlohmann::json_schema::basic_error_handler::error(ptr, instance, message);
+			std::cerr << "ERROR: '" << ptr << "' - '" << instance << "': " << message << "\n";
+		}
+	};
+
+    custom_error_handler err;
+    validator.validate(obj, err); // validate the document
+
+    if (err)
+        return 0;
+    return 1;
+}
\ No newline at end of file