# Use Prodigy purely as an annotating tool?

**URL:** <https://support.prodi.gy/t/use-prodigy-purely-as-an-annotating-tool/981>\
**Category:** Uncategorized\
**Tags:** usage, spacy, solved\
**Created:** [November 19, 2018, 4:18pm UTC](https://support.prodi.gy/t/use-prodigy-purely-as-an-annotating-tool/981 "2018-11-19T16:18:48Z")\
**Posts on this page:** 1\
**Showing post:** 11

<div class="post-metadata">

**Author:** ![ines](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/ines/32/3_2.png) [@ines](https://support.prodi.gy/u/ines)\
**Post date:** [December 12, 2018, 2:04pm UTC](https://support.prodi.gy/t/use-prodigy-purely-as-an-annotating-tool/981/11 "2018-12-12T14:04:13Z")

</div>

> [@Enix26](#):
>
> Hello Ines, Is it possible to customize the UI? Over what language is built?

The Prodigy library that configures the annotation workflows is written in Python, the app is build in JavaScript (React), shipped with the core library as a compiled bundle.

See this page for theming options and details on custom HTML annotation views:

> **[Web Application · Prodigy · An annotation tool for AI, Machine Learning &...](https://prodi.gy/docs/api-web-app/)**
>
> A downloadable annotation tool for NLP and computer vision tasks such as named entity recognition, text classification, object detection, image segmentation, A/B evaluation and more.

We're also currently testing supports for custom scripts – currently available for testing in the `"html"` interface. This lets you define your own actions and interfaces via custom recipes. See here for details and examples:

> [@Custom view templates with scripts](https://support.prodi.gy/t/custom-view-templates-with-scripts/302/6):
>
> Update: All works pretty smoothly already! :tada [custom\_js\_poc] The above example only needed the following html\_template and javascript config: \<button class="custom-button" onClick="updateText()"\> point_down Text to uppercase \</button\> \<br /\> \<strong\>{{text}}\</strong\> let upper = false; function updateText() { const text = window.prodigy.content.text; const newText = !upper ? text.toUpperCase() : text.toLowerCase(); window.prodigy.update({ text: newText }); upper = !upper; …

---

_[View the full topic](https://support.prodi.gy/t/use-prodigy-purely-as-an-annotating-tool/981)._
