Thoth App is the authenticated publisher and staff management application for Thoth Open Metadata. Publishers use it to manage structured bibliographic metadata, including works, publications, contributors, series and related records.
For more on the wider Thoth project, see thoth.pub and the thoth-pub GitHub organisation.
This application is a consumer of the Thoth GraphQL API. It does not define Thoth's domain model, GraphQL API contract or export formats; those are owned elsewhere in the Thoth project.
- Next.js 16 (App Router) and React 19, written in TypeScript
- MUI and Tailwind CSS for UI
- TanStack Query for server state, XState for workflow state
graphql-requestwith GraphQL Code Generator for GraphQL access- NextAuth with ZITADEL for authentication
- Vitest and Testing Library for testing
npm ci
cp env.example .env.local
npm run devThe values in .env.local must be configured for the Thoth and ZITADEL
environment you are connecting to. See env.example for the required variable
names.
npm run dev- start the development servernpm run build- create a production buildnpm run start- run the production buildnpm run lint- run ESLintnpm run generate- run GraphQL Code Generatornpm run generate:watch- run GraphQL Code Generator in watch modenpm test -- --run- run the test suite oncenpm test -- --run --coverage- run the test suite once, with coverage
GraphQL Code Generator is configured in codegen.ts to consume the
repository-pinned schema snapshot at graphql/schema.v1.7.0.graphql, and
writes generated client artefacts to gql/. Generated files under gql/
should not be edited by hand; run npm run generate to regenerate them.
app/- Next.js routes and layoutssrc/- application code, organised using Feature-Sliced Designgraphql/- the pinned GraphQL schema snapshot this app is generated againstgql/- generated GraphQL client artefacts
Development branches from dev, and pull requests normally target dev.
Bug reports and proposed changes are welcome via GitHub issues. For substantial changes, please open an issue to discuss the approach before starting implementation.
This project is licensed under the Apache License 2.0. See LICENSE for details.