Skip to content

texttechnologylab/MMAnnotator

Repository files navigation

MultiMedia Annotator (MM-Annotator)

Web frontend for the TextAnnotator backend - a browser-based platform for collaborative, real-time annotation of text and multimedia (image) documents, with optional LLM-assisted annotation. Built with React 19, TypeScript, Vite and Tailwind CSS.

Features

  • Project-based workflow: browse projects, track per-document annotation status and overall progress, resume where you left off.
  • Criteria-based rating forms: configurable sections of button, select and numeric fields that map to UIMA Category feature structures.
  • Multimedia annotation: text, question/answer scenarios and lazy-loaded, virtualised image galleries shown side by side.
  • LLM-assisted annotation (UCE RAG Bot): streaming chat with text and vision models that can read the document and auto-fill rating fields via structured tool actions.
  • Admin tooling: document upload (XMI / gzipped XMI), CAS validation, fine-grained permission management (per user/group, recursive, even distribution among annotators), CSV export and progress dashboards.
  • Role-based access and dark mode.

Getting Started

Requires Node.js 22+ and npm 10+.

npm install
npm run dev      # dev server (http://localhost:5173)
npm run build    # production build -> dist/
npm run lint     # ESLint
npm run format   # Prettier

Configuration

Backend endpoints are resolved at runtime from window._env_, with fallbacks in src/lib/constants.ts:

Variable Purpose
BACKEND_URL TextAnnotator WebSocket URL (…/uima)
UCE_URL UCE host for the RAG Bot

In Docker these are injected at container start by docker-entrypoint.sh. See docs/getting-started/configuration.md.

Docker

docker build -t mm-annotator .
docker run -p 80:80 -e BACKEND_URL=wss://host/uima -e UCE_URL=https://uce mm-annotator

A multi-stage build compiles the app and serves it via nginx with SPA routing. For a reproducible deployment, a prebuilt image (docker.texttechnologylab.org/textannotator-rag-demo:latest) and a Compose capsule are described in docs/deployment/docker.md.

Project Structure

src/
  pages/        # Route pages (Login, Projects, Overview, Annotation, Admin Upload)
  components/   # UI: NavBar, RagBot, RepoTree, inputs/, display/, admin/, shadcn/
  hooks/        # Data hooks (useCasSeg, useImages, useProjectStats, …)
  lib/          # API clients (annotator/, resources/), helpers, criteria forms
  zustand/      # Global stores (user, project, document, stats, loading)

Documentation

Full documentation is published at texttechnologylab.github.io/MMAnnotator. The sources live in docs/ and are built and deployed from master via GitHub Actions (MkDocs Material).

Demo

https://www.eval.textannotator.texttechnologylab.org/

  • Username: DemoAnnotator
  • Password: demo2025 Note: the adming panel is not available in the demo since uploading can not be permitted securely.

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages