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.
- Astro — server-rendered app framework, with React for interactive UI
- Supabase — authentication, database, storage, and realtime
- Radix UI — accessible component primitives
- Annotation libraries —
@recogito/text-annotator(text),@recogito/pdf-annotator(PDF), and Annotorious with OpenSeadragon (images)
Standards & interoperability
Section titled “Standards & interoperability”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.
File structure
Section titled “File structure”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 helperssrc/components/— shared React componentssrc/pages/— Astro routes, internationalized under[lang]/, plus theapi/server endpointssrc/plugins/— the plugin registry and extension mount points (see the Plugins guide and SDK guide)src/i18n/— translationssrc/config.json— per-instance branding and authentication config (see the Config Tool)
Deployment
Section titled “Deployment”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 withnode ./dist/server/entry.mjs.
See also
Section titled “See also”- Local Development — run the client and backend locally
- Self-Hosting Guide — deploy to production, including all environment variables
- Server Architecture — the data model and backend

