All Projects → thoth-pub → thoth

thoth-pub / thoth

Licence: Apache-2.0 license
Metadata management and dissemination system for Open Access books

Programming Languages

rust
11053 projects
PLpgSQL
1095 projects
HTML
75241 projects
Dockerfile
14818 projects
Makefile
30231 projects
CSS
56736 projects

Projects that are alternatives of or similar to thoth

oge
Page metadata as a service
Stars: ✭ 22 (-12%)
Mutual labels:  metadata
oblivion
The Oblivion masterlist.
Stars: ✭ 16 (-36%)
Mutual labels:  metadata
MP4Parse
C++ library for MP4 file parsing.
Stars: ✭ 55 (+120%)
Mutual labels:  metadata
point-us-to-a-book
📚 reading list
Stars: ✭ 50 (+100%)
Mutual labels:  books
sqllineage
SQL Lineage Analysis Tool powered by Python
Stars: ✭ 348 (+1292%)
Mutual labels:  metadata
wheelfile
🔪🧀 API for creating and inspecting Python .whl files (wheels).
Stars: ✭ 22 (-12%)
Mutual labels:  metadata
Gen2Kindle
Search, download, convert and send files directly to your kindle from Libgen in one place.
Stars: ✭ 21 (-16%)
Mutual labels:  books
crypto-books
Best of Crypto Books - A collection of books, white papers & more about crypto and blockchains.
Stars: ✭ 40 (+60%)
Mutual labels:  books
Islandora-Metadata-Interest-Group
The purpose of the Islandora Metadata Interest Group (IMIG) is to investigate and provide metadata solutions that help improve metadata creation, maintenance and enhancement in Islandora.
Stars: ✭ 29 (+16%)
Mutual labels:  metadata
processwire-imageextra
This module allows you to add additional informations to an image (for example: title, description, link, orientation and any field you may need).
Stars: ✭ 20 (-20%)
Mutual labels:  metadata
Crema
Meta data server & client tools for game development
Stars: ✭ 61 (+144%)
Mutual labels:  metadata
react-native-xaml
A React Native Windows library to use XAML / WinUI controls
Stars: ✭ 55 (+120%)
Mutual labels:  metadata
metamapper
Metamapper is a data discovery and documentation platform for improving how teams understand and interact with their data.
Stars: ✭ 60 (+140%)
Mutual labels:  metadata
booksearch
A Simple Search Engine to help you find FREE Download Links to your Favourite Books
Stars: ✭ 48 (+92%)
Mutual labels:  books
Clean-code-in-Python
Resources for the book Clean code in Python, and material for the talk at EuroPython 2016
Stars: ✭ 130 (+420%)
Mutual labels:  books
database-metadata-bind
A library for binding information from java.sql.DatabaseMetadata
Stars: ✭ 17 (-32%)
Mutual labels:  metadata
metadata-standards-description-language
Service Design & Assurance Metadata Standards: A language to describe spreadsheets and an implementation that extracts and validates the data.
Stars: ✭ 13 (-48%)
Mutual labels:  metadata
my-action-github
awesome github
Stars: ✭ 62 (+148%)
Mutual labels:  books
LibraryGenesis
Library Genesis iOS Client
Stars: ✭ 30 (+20%)
Mutual labels:  books
lit
Literature for the self-taught AI practitioner! 📚
Stars: ✭ 199 (+696%)
Mutual labels:  books

Thoth

Open bibliographic metadata management and dissemination system

GitHub Workflow Thoth Releases License Info

About

Thoth (/toʊt, θoʊθ/, Greek Θώθ < Coptic Ⲑⲱⲟⲩⲧ < Egyptian ḏḥwtj) is an Open Dissemination System for Open Access books. Written purely in rust, it consists of:

  • A GraphQL API, implementing a data model specifically designed for OA books
  • A REST API to export metadata in formats like ONIX, MARC, etc.
  • A WebAssembly GUI to manage metadata records.

For more information about Thoth, its data and metadata formats, and more, see the repo's wiki. You can also use GraphiQL to explore the GraphQL API (click on "Docs" at the top right), or RapiDoc to inspect the REST API.

Getting Started

Requirements

  • Rustup
  • Stable Toolchain: rustup default stable
  • wasm-pack
  • rollup
  • A PostgreSQL database (included in docker-compose.yml if ran using docker)
  • libssl-dev

Running with docker

git clone https://github.com/thoth-pub/thoth.git
cd thoth
cp .env.example .env  # Edit the credentials in .env
docker-compose up

Running with rust (cargo)

Config

git clone https://github.com/thoth-pub/thoth.git
cd thoth
cp .env.example .env  # Edit the credentials in .env

Creating Postgres DB and User

psql
psql -U postgres
CREATE ROLE thoth SUPERUSER LOGIN PASSWORD 'thoth';
CREATE DATABASE thoth WITH OWNER thoth; 

Exit the psql command line with:

\q

An example of a .env file:

THOTH_GRAPHQL_API=http://localhost:8000
# THOTH_EXPORT_API is used at compile time, must be a public facing URL
THOTH_EXPORT_API=http://localhost:8181
# Authentication cookie domain
THOTH_DOMAIN=localhost
# Full postgres URL (With the role and db we created in the orevious step, it will look like this)
DATABASE_URL=postgres://thoth:thoth@localhost/thoth
# Authentication cookie secret key (can be any string really)
SECRET_KEY=we_like_s%_books_255
# Logging level
RUST_LOG=info

Proceed to install Wasm

cargo install wasm-pack

Install rollup:

sudo npm install --global rollup

Export the ENV variables, THOTH_GRAPHQL_API and THOTH_EXPORT_API:

export THOTH_GRAPHQL_API=http://localhost:8000
export THOTH_EXPORT_API=http://localhost:8181

API

cargo run init

Wasm GUI

wasm-pack build thoth-app/ --target web \
  && rollup thoth-app/main.js --format iife --file thoth-app/pkg/thoth_app.js \
  && cargo run start app

Building with docker

The wasm APP needs to know the endpoint the API will be running at compile time, we must provide THOTH_API as a build argument to the docker daemon upon build:

docker build \
    --build-arg THOTH_GRAPHQL_API=https://api.thoth.pub \
    --build-arg THOTH_EXPORT_API=https://export.thoth.pub \
    . -t openbookpublishers/thoth

Acknowledgements

Thoth is being developed as part of the COPIM project, an international effort to build community-owned, open systems and infrastructures to enable Open Access book publishing to flourish. COPIM is funded by the Research England Development (RED) Fund, and Arcadia, a charitable fund of Lisbet Rausing and Peter Baldwin.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].