MathHub Architecture
MathHub.info is a portal for handling flexiformal documents and active mathematical documents. It consists of the following parts:
- A React.JS-based front end for user management, discussion forums, community features, etc,
- JOBAD for active document features,
- The MMT API for logic-based services,
- MMT build system for transformation from the various surface formats to OMDoc/MMT.
- A GitLab instance http://gl.mathhub.org for management of GIT-based repositories.
These are coordinated and orchestrated as a swarm of docker containers, which also give basic administrative functionality.
All MathHub content is stored in GIT repositories, that are managed in a special GitLab instance: http://gl.mathhub.info. The repositories are organized into libraries (usually for community-supported resources; which may maintained on MathHub or be imported from an external library for archiving) and user spaces (personal collections of flexiformal repositories).
MathHub content can be authored both in a online interface or a offline workflow. The two workflows are coordinated by GIT-based distribution facilities.
(Flexiformal) content is uniformly represented in the OMDoc/MMT format for interoperability, but can be authored/edited in various surface formats better suited for human manipulation and then converted to OMDoc by the MathHub build system, which also supports collection maintenance by error reporting and continuous integration.
The MathHub front end is user-independent. User/account management is relegated to GitLab, and access control is provided by GIT at the level of math archives: a user can work with all the content in MathHub she can clone from GitLab.
User-specific semantic services are provided by service providers, e.g. the MMT API, which load a subset of the MathHub content visible to the respective user into a local working copy and provide services and interactions on this basis. To be able to serve multiple users at the same time, MathHub bundles working copies, build processes, and service providers into MathHub workers. The front end only relays user requests and generated content in a uniform interface.