Skip to content

Client Architecture

recogito-client is the front-end of Recogito Studio: an Astro application (server-rendered, with React components) that talks to the Supabase-based backend.

Recogito Studio is built on open standards, so documents and annotations stay portable, rather than locked into the platform:

  • Annotations are structured following the W3C Web Annotation Data Model (targets with fragment, SVG, text-position, text-quote, and XPath/range selectors) and can be exported as JSON-serialized W3C Web Annotations.
  • Images are IIIF resources (Image and Presentation APIs): projects can import IIIF manifests and export a derivative manifest with annotations embedded.
  • TEI-XML text is supported for import, annotation, and export. (See also the TEI Inliner plugin for inline markup.)
  • Sign-in supports SAML and OpenID Connect.
  • src/apps/ — feature modules (the dashboard, the text and image annotation views, project settings, collaboration, auth flows, user management, and more)
  • src/backend/ — Supabase browser/server clients, entity CRUD, and domain helpers
  • src/components/ — shared React components
  • src/pages/ — Astro routes, internationalized under [lang]/, plus the api/ server endpoints
  • src/plugins/ — the plugin registry and extension mount points (see the Plugins guide and SDK guide)
  • src/i18n/ — translations
  • src/config.json — per-instance branding and authentication config (see the Config Tool)

The client can be built in two ways, each with its own Astro adapter:

  • Netlify (npm run build, astro.config.mjs) — used by the hosted service.
  • Node standalone (npm run build-node, astro.config.node.mjs) — used for self-hosting; runs with node ./dist/server/entry.mjs.