diff --git a/README.md b/README.md
index 7bde45c..8faa259 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,7 @@ Compared to the original Zabbix API, this GraphQL API provides several key enhan
* **Strongly Typed Schema**: Leverages GraphQL's type system for clear API documentation and client-side code generation.
* **Dynamic Schema Extensibility**: Easily extend the API with custom schema snippets and dynamic resolvers for specialized device types without modifying the core code.
* **CI/CD Integration**: Includes a ready-to-use Forgejo/Gitea/GitHub Actions workflow for automated building, testing, and deployment.
+* **Sample Application (VCR)**: Designed to power the **Virtual Control Room**, a professional cockpit for managing thousands of IoT/Edge devices.
## How to Install and Start
@@ -186,6 +187,20 @@ This allows for fine-grained access control in your frontend or external applica
For a complete example of how to import these permission groups, see the [Permissions Template Groups Import Sample](docs/sample_import_permissions_template_groups_mutation.graphql).
+## Sample Application: Virtual Control Room (VCR)
+
+The **Virtual Control Room (VCR)** is a professional cockpit and control center application designed for monitoring and managing large-scale deployments of IoT and Edge devices, such as traffic management systems, roadwork safety equipment, and environmental sensors.
+
+### How VCR uses the GraphQL API:
+
+* **Unified Cockpit**: VCR utilizes the API's **hierarchical mapping** to provide a unified view of diverse device types. It maps Zabbix items and tags directly to structured GraphQL objects (e.g., `operational` telemetry and `current` business state).
+* **Dynamic Authorization**: The `hasPermissions` query is used to implement a **Dynamic UI**. Buttons, controls, and status indicators are shown or enabled only if the user has the required `READ` or `READ_WRITE` permissions for that specific object.
+* **Mass Provisioning**: VCR leverages the **mass import** capabilities to provision thousands of devices and templates in a single operation, significantly reducing manual configuration effort in Zabbix.
+* **Data Visualization**: It uses the `exportHostValueHistory` endpoint to power dashboards showing historical trends, such as traffic density, battery levels, or sensor readings over time.
+
+For more detailed information about the VCR product, please refer to the technical presentation:
+[VCR - Technical product information](docs/VCR%20-%20Technical%20product%20information.pdf)
+
## Sample Environment File
Below is a complete example of a `.env` file showing all available configuration options:
diff --git a/docs/VCR - Technical product information.pdf b/docs/VCR - Technical product information.pdf
new file mode 100644
index 0000000..9cd7c57
--- /dev/null
+++ b/docs/VCR - Technical product information.pdf
@@ -0,0 +1,15925 @@
+%PDF-1.4
+%
+1 0 obj
+<<
+/Type /Catalog
+/Version /1.4
+/Pages 2 0 R
+/Metadata 3 0 R
+/StructTreeRoot 4 0 R
+/MarkInfo 5 0 R
+/Lang (de-DE)
+/ViewerPreferences 6 0 R
+>>
+endobj
+7 0 obj
+<<
+/Title (VCR - Technical product information)
+/Creator (Canva)
+/Producer (Canva)
+/CreationDate (D:20260127114130+00'00')
+/ModDate (D:20260127114130+00'00')
+/Keywords (DAG8VLZFaS4,BAE0LxBesj0,0)
+/Author (Andreas Hilbig)
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R]
+/Count 10
+>>
+endobj
+3 0 obj
+<<
+/Length 2715
+/Type /Metadata
+/Subtype /XML
+>>
+stream
+
+
+
+
+
+ VCR - Technical product information
+ VCR - Technical product information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+endstream
+endobj
+4 0 obj
+<<
+/Type /StructTreeRoot
+/ParentTree 18 0 R
+/ParentTreeNextKey 100009
+/K 19 0 R
+>>
+endobj
+5 0 obj
+<<
+/Marked true
+/Suspects false
+>>
+endobj
+6 0 obj
+<<
+/Type /ViewerPreferences
+/DisplayDocTitle true
+>>
+endobj
+8 0 obj
+<<
+/Type /Page
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 20 0 R
+/XObject <<
+/X5 21 0 R
+/X6 22 0 R
+/X12 23 0 R
+>>
+/Font 24 0 R
+>>
+/MediaBox [0.0 0.0 595.5 841.92]
+/Contents 25 0 R
+/StructParents 0
+/Tabs /S
+/Parent 2 0 R
+/BleedBox [0.0 0.0 595.5 841.92]
+/TrimBox [0.0 0.0 595.5 841.92]
+/CropBox [0.0 0.0 595.5 841.92]
+/Rotate 0
+/Annots []
+>>
+endobj
+9 0 obj
+<<
+/Type /Page
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 26 0 R
+/XObject <<
+/X38 27 0 R
+/X40 28 0 R
+/X42 29 0 R
+/X44 30 0 R
+>>
+/Font 31 0 R
+>>
+/MediaBox [0.0 0.0 595.5 841.92]
+/Annots [32 0 R 33 0 R]
+/Contents 34 0 R
+/StructParents 1
+/Tabs /S
+/Parent 2 0 R
+/BleedBox [0.0 0.0 595.5 841.92]
+/TrimBox [0.0 0.0 595.5 841.92]
+/CropBox [0.0 0.0 595.5 841.92]
+/Rotate 0
+>>
+endobj
+10 0 obj
+<<
+/Type /Page
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 35 0 R
+/XObject <<
+/X29 36 0 R
+>>
+/Font 37 0 R
+>>
+/MediaBox [0.0 0.0 595.5 841.92]
+/Contents 38 0 R
+/StructParents 100002
+/Tabs /S
+/Parent 2 0 R
+/BleedBox [0.0 0.0 595.5 841.92]
+/TrimBox [0.0 0.0 595.5 841.92]
+/CropBox [0.0 0.0 595.5 841.92]
+/Rotate 0
+/Annots []
+>>
+endobj
+11 0 obj
+<<
+/Type /Page
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 39 0 R
+/Font 40 0 R
+>>
+/MediaBox [0.0 0.0 595.5 841.92]
+/Contents 41 0 R
+/StructParents 100003
+/Tabs /S
+/Parent 2 0 R
+/BleedBox [0.0 0.0 595.5 841.92]
+/TrimBox [0.0 0.0 595.5 841.92]
+/CropBox [0.0 0.0 595.5 841.92]
+/Rotate 0
+/Annots []
+>>
+endobj
+12 0 obj
+<<
+/Type /Page
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 42 0 R
+/XObject <<
+/X29 43 0 R
+>>
+/Font 44 0 R
+>>
+/MediaBox [0.0 0.0 595.5 841.92]
+/Contents 45 0 R
+/StructParents 100004
+/Tabs /S
+/Parent 2 0 R
+/BleedBox [0.0 0.0 595.5 841.92]
+/TrimBox [0.0 0.0 595.5 841.92]
+/CropBox [0.0 0.0 595.5 841.92]
+/Rotate 0
+/Annots []
+>>
+endobj
+13 0 obj
+<<
+/Type /Page
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 46 0 R
+/Font 47 0 R
+>>
+/MediaBox [0.0 0.0 595.5 841.92]
+/Contents 48 0 R
+/StructParents 100005
+/Tabs /S
+/Parent 2 0 R
+/BleedBox [0.0 0.0 595.5 841.92]
+/TrimBox [0.0 0.0 595.5 841.92]
+/CropBox [0.0 0.0 595.5 841.92]
+/Rotate 0
+/Annots []
+>>
+endobj
+14 0 obj
+<<
+/Type /Page
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 49 0 R
+/Font 50 0 R
+>>
+/MediaBox [0.0 0.0 595.5 841.92]
+/Contents 51 0 R
+/StructParents 100006
+/Tabs /S
+/Parent 2 0 R
+/BleedBox [0.0 0.0 595.5 841.92]
+/TrimBox [0.0 0.0 595.5 841.92]
+/CropBox [0.0 0.0 595.5 841.92]
+/Rotate 0
+/Annots []
+>>
+endobj
+15 0 obj
+<<
+/Type /Page
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 52 0 R
+/XObject <<
+/X37 53 0 R
+/X46 54 0 R
+/X55 55 0 R
+>>
+/Font 56 0 R
+>>
+/MediaBox [0.0 0.0 595.5 841.92]
+/Contents 57 0 R
+/StructParents 100007
+/Tabs /S
+/Parent 2 0 R
+/BleedBox [0.0 0.0 595.5 841.92]
+/TrimBox [0.0 0.0 595.5 841.92]
+/CropBox [0.0 0.0 595.5 841.92]
+/Rotate 0
+/Annots []
+>>
+endobj
+16 0 obj
+<<
+/Type /Page
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 58 0 R
+>>
+/MediaBox [0.0 0.0 595.5 841.92]
+/Contents 59 0 R
+/StructParents 100008
+/Tabs /S
+/Parent 2 0 R
+/BleedBox [0.0 0.0 595.5 841.92]
+/TrimBox [0.0 0.0 595.5 841.92]
+/CropBox [0.0 0.0 595.5 841.92]
+/Rotate 0
+/Annots []
+>>
+endobj
+17 0 obj
+<<
+/Type /Page
+/Resources 60 0 R
+/MediaBox [0.0 0.0 595.5 841.92]
+/Contents 61 0 R
+/Tabs /S
+/Parent 2 0 R
+/BleedBox [0.0 0.0 595.5 841.92]
+/TrimBox [0.0 0.0 595.5 841.92]
+/CropBox [0.0 0.0 595.5 841.92]
+/Rotate 0
+/Annots []
+>>
+endobj
+18 0 obj
+<<
+/Limits [0 100008]
+/Nums [0 [62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R
+72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R
+82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R]
+ 1 [62 0 R 63 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R
+100 0 R 101 0 R 102 0 R 103 0 R]
+ 100000 104 0 R 100001 104 0 R 100002 [105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R
+115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R
+125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R
+135 0 R 136 0 R 137 0 R 138 0 R]
+100003 [105 0 R 106 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R
+147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R
+157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R]
+ 100004 [165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R
+175 0 R]
+ 100005 [165 0 R 166 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R
+183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R]
+ 100006 [165 0 R 166 0 R 190 0 R 191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R
+198 0 R 199 0 R]
+ 100007 [200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R
+210 0 R 211 0 R 212 0 R 213 0 R 214 0 R]
+100008 [200 0 R 201 0 R]
+]
+>>
+endobj
+19 0 obj
+<<
+/K [62 0 R 105 0 R 165 0 R 200 0 R]
+/P 4 0 R
+/S /Document
+>>
+endobj
+20 0 obj
+<<
+/G3 215 0 R
+/G11 216 0 R
+>>
+endobj
+21 0 obj
+<<
+/Length 299
+/Type /XObject
+/Subtype /Form
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 217 0 R
+/Font 218 0 R
+>>
+/BBox [0 0 1985 195]
+/Group 219 0 R
+/Filter /FlateDecode
+>>
+stream
+xJ1M'^t}łPZ_ܥM2LkऑY(>'.L5d?nǽo_n~t:~?nEFrջ@LëgB}ɑ cͥ9ixY1 b d
+$>`8MDo*r # )^ T ;T| VsL#>)p_sá42C:I@|0A>
+/BBox [0 0 1039 70]
+/Group 222 0 R
+/Filter /FlateDecode
+>>
+stream
+xSnAOϵW"4Q$ޠ
+GnwR?WgoQ8 tA4&QC?TVw
+O/__~
+endstream
+endobj
+23 0 obj
+<<
+/Length 33
+/Type /XObject
+/Subtype /Form
+/Resources <<
+/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/ExtGState 223 0 R
+/XObject <<
+/X10 224 0 R
+>>
+>>
+/BBox [0 0 2482 744]
+/Group 225 0 R
+>>
+stream
+0 0 0 RG 0 0 0 rg
+/G3 gs
+/X10 Do
+
+endstream
+endobj
+24 0 obj
+<<
+/F13 226 0 R
+/F25 227 0 R
+/F35 228 0 R
+>>
+endobj
+25 0 obj
+<<
+/Length 5904
+/Filter /FlateDecode
+>>
+stream
+x=ۮ7rX*H@˱v6b}%N{dCO7ɺn4_g;Lr)4|W˯Ǐnˋo./~{wo]gW{{or9/_яEgw
߽x'wדG_-5M g3\ebO: 8Oj?
?W߽*퓯k^?q0}ȓ/?O=.4Fyy {㸩?//{_
D^Zkq~&~72[qxؐ|NlC'XnyeȊqe[=.2$] N3y3"]t4svd܈\>GB q/ov{ H!y4fwo/
PX0 ӡ iٕw#@@8yIiv<P};=qx'E˾$KkE&yB) |MM aX?VX LJh8 HE>V`Tܞ&$BOAV.5;i>I#J4$""WxO.ba3핅RU8P}YDHa|BA