diff --git a/README.md b/README.md
index 2333e8a..797e438 100644
--- a/README.md
+++ b/README.md
@@ -175,6 +175,24 @@ The main exceptions are
Support for JSON References is in development. It is mostly working, however some of the test cases added to [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite) for v6/v7 are still failing.
+## JSON Inspector
+
+An example application based on Qt is also included under [inspector](./inspector). It can be used to experiment with JSON Schemas and target documents. JSON Inspector is a self-contained CMake project, so it must be built separately:
+
+```bash
+ cd inspector
+ mkdir build
+ cd build
+ cmake ..
+ make
+```
+
+Schemas and target documents can be loaded from file or entered manually. Content is parsed dynamically, so you get rapid feedback.
+
+Here is a screenshot of JSON Inspector in action:
+
+
+
## Documentation ##
Doxygen documentation can be built by running 'doxygen' from the project root directory. Generated documentation will be placed in 'doc/html'. Other relevant documentation such as schemas and specifications have been included in the 'doc' directory.
diff --git a/doc/inspector/screenshot.png b/doc/inspector/screenshot.png
new file mode 100644
index 0000000..4294040
Binary files /dev/null and b/doc/inspector/screenshot.png differ
diff --git a/inspector/.gitignore b/inspector/.gitignore
new file mode 100644
index 0000000..af21fe5
--- /dev/null
+++ b/inspector/.gitignore
@@ -0,0 +1,3 @@
+build/
+cmake-build-*/
+CMakeFiles/
diff --git a/inspector/CMakeLists.txt b/inspector/CMakeLists.txt
new file mode 100644
index 0000000..8320921
--- /dev/null
+++ b/inspector/CMakeLists.txt
@@ -0,0 +1,39 @@
+# Reference: http://qt-project.org/doc/qt-5.0/qtdoc/cmake-manual.html
+
+cmake_minimum_required(VERSION 3.0)
+
+# Add folder where are supportive functions
+set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+# Include Qt basic functions
+include(QtCommon)
+
+# Basic information about project
+
+project(inspector VERSION 1.0)
+
+# Set PROJECT_VERSION_PATCH and PROJECT_VERSION_TWEAK to 0 if not present, needed by add_project_meta
+fix_project_version()
+
+# Set additional project information
+set(COPYRIGHT "Copyright (c) 2020 Tristan Penman. All rights reserved.")
+set(IDENTIFIER "com.tristanpenman.valijson.inspector")
+
+set(SOURCE_FILES
+ src/highlighter.cpp
+ src/main.cpp
+ src/window.cpp
+)
+
+include_directories(SYSTEM ../include)
+
+add_project_meta(META_FILES_TO_INCLUDE)
+
+find_package(Qt5 COMPONENTS Widgets REQUIRED)
+
+add_executable(${PROJECT_NAME} ${OS_BUNDLE} # Expands to WIN32 or MACOS_BUNDLE depending on OS
+ ${SOURCE_FILES} ${META_FILES_TO_INCLUDE} ${RESOURCE_FILES}
+)
+
+target_link_libraries(${PROJECT_NAME} Qt5::Widgets)
diff --git a/inspector/cmake/MacOSXBundleInfo.plist.in b/inspector/cmake/MacOSXBundleInfo.plist.in
new file mode 100644
index 0000000..ce11313
--- /dev/null
+++ b/inspector/cmake/MacOSXBundleInfo.plist.in
@@ -0,0 +1,38 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ ${MACOSX_BUNDLE_EXECUTABLE_NAME}
+ CFBundleGetInfoString
+ ${MACOSX_BUNDLE_INFO_STRING}
+ CFBundleIconFile
+ ${MACOSX_BUNDLE_ICON_FILE}
+ CFBundleIdentifier
+ ${MACOSX_BUNDLE_GUI_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleLongVersionString
+ ${MACOSX_BUNDLE_LONG_VERSION_STRING}
+ CFBundleName
+ JSON Inspector
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ ${MACOSX_BUNDLE_SHORT_VERSION_STRING}
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${MACOSX_BUNDLE_BUNDLE_VERSION}
+ CSResourcesFileMapped
+
+ LSRequiresCarbon
+
+ NSHumanReadableCopyright
+ ${MACOSX_BUNDLE_COPYRIGHT}
+ NSPrincipalClass
+ NSApplication
+
+
diff --git a/inspector/cmake/QtCommon.cmake b/inspector/cmake/QtCommon.cmake
new file mode 100644
index 0000000..ef633ba
--- /dev/null
+++ b/inspector/cmake/QtCommon.cmake
@@ -0,0 +1,82 @@
+macro(fix_project_version)
+if (NOT PROJECT_VERSION_PATCH)
+ set(PROJECT_VERSION_PATCH 0)
+endif()
+
+if (NOT PROJECT_VERSION_TWEAK)
+ set(PROJECT_VERSION_TWEAK 0)
+endif()
+endmacro()
+
+macro(add_project_meta FILES_TO_INCLUDE)
+if (NOT RESOURCE_FOLDER)
+ set(RESOURCE_FOLDER res)
+endif()
+
+if (NOT ICON_NAME)
+ set(ICON_NAME AppIcon)
+endif()
+
+if (APPLE)
+ set(ICON_FILE ${RESOURCE_FOLDER}/${ICON_NAME}.icns)
+elseif (WIN32)
+ set(ICON_FILE ${RESOURCE_FOLDER}/${ICON_NAME}.ico)
+endif()
+
+if (WIN32)
+ configure_file("${PROJECT_SOURCE_DIR}/cmake/windows_metafile.rc.in"
+ "windows_metafile.rc"
+ )
+ set(RES_FILES "windows_metafile.rc")
+ set(CMAKE_RC_COMPILER_INIT windres)
+ ENABLE_LANGUAGE(RC)
+ SET(CMAKE_RC_COMPILE_OBJECT " -O coff -i -o