{"id":13555538,"url":"https://github.com/consortium/hybrid-publishing-research","last_synced_at":"2026-01-10T22:03:13.608Z","repository":{"id":34777701,"uuid":"38760551","full_name":"consortium/hybrid-publishing-research","owner":"consortium","description":"This repository is the document collection of the consortium.io. It’s compiled in a redistributable way. We’re hosting this on https://research.consortium.io. If you just wish to download the documents, then find the files in the folder dist/docs.","archived":false,"fork":true,"pushed_at":"2018-04-24T10:06:27.000Z","size":73054,"stargazers_count":12,"open_issues_count":38,"forks_count":5,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-03T08:37:50.256Z","etag":null,"topics":["zotero","zotero-api"],"latest_commit_sha":null,"homepage":"https://research.consortium.io/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"hybrid-publishing-lab/hybrid-publishing-research","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/consortium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-08T14:50:26.000Z","updated_at":"2021-12-24T15:28:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/consortium/hybrid-publishing-research","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/consortium/hybrid-publishing-research","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consortium%2Fhybrid-publishing-research","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consortium%2Fhybrid-publishing-research/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consortium%2Fhybrid-publishing-research/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consortium%2Fhybrid-publishing-research/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/consortium","download_url":"https://codeload.github.com/consortium/hybrid-publishing-research/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consortium%2Fhybrid-publishing-research/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28259581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2026-01-10T02:00:06.867Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["zotero","zotero-api"],"created_at":"2024-08-01T12:03:16.283Z","updated_at":"2026-01-10T22:03:13.569Z","avatar_url":"https://github.com/consortium.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","others"],"sub_categories":[],"readme":"# Hybrid Publishing Research\n\n[![Join the chat at https://gitter.im/consortium/hybrid-publishing-research](https://badges.gitter.im/consortium/hybrid-publishing-research.svg)](https://gitter.im/consortium/hybrid-publishing-research?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![Build Status](https://travis-ci.org/consortium/hybrid-publishing-research.svg?branch=master)](https://travis-ci.org/consortium/hybrid-publishing-research)\n[![Dependency Status](https://david-dm.org/consortium/hybrid-publishing-research.svg)](https://david-dm.org/consortium/hybrid-publishing-research)[![DOI](https://zenodo.org/badge/doi/10.5281/zenodo.19048.svg)](https://doi.org/10.5281/zenodo.19048)\n[![Coverage Status](https://coveralls.io/repos/github/consortium/hybrid-publishing-research/badge.svg?branch=master)](https://coveralls.io/github/consortium/hybrid-publishing-research?branch=master)\n\nThis repository is the document collection of the consortium.io. It’s compiled in a redistributable way.\nWe’re hosting this on [https://research.consortium.io](https://research.consortium.io). If you just wish to download the documents, then find the files in the folder [dist/docs](https://github.com/consortium/hybrid-publishing-research/tree/master/dist/docs).\n\nThis is an experimental publishing system developed by the hybrid publishing consortium. Please keep in mind that this is a work in progress and that we are continuously adding new features. Check our [roadmap](#roadmap) and our [github issue tracker](https://github.com/consortium/hybrid-publishing-research/issues). If you reuse this code, then please commit and file a pull request so we can all benefit from your development.\n\nFor further information on our efforts to create open source software for public infrastructures within publishing, visit the consortium website [https://consortium.io/about](http://www.consortium.io/about).\n\n## Features\n\nThe Hybrid Publishing Research system features:\n\n    - a dynamic webService for viewing documents\n    - a dynamic validation for\n        - html5\n        - javascript\n        - css\n        - dublin core \n    - a dynamic index generation\n\n## Requirements for local development or local viewing\n\n    - tested with Ubuntu, Mac OS\n    - git\n    - GitHub knowhow\n    - commandline knowhow\n    - a text editor (i.e. sublimetext)\n    - a browser\n    - node.js (tested with node.js 0.10.37)\n    - grunt (tested with grunt 0.4.5)\n    - bower \n\n## Installation\n\nThis repository is equipped with a node.js setup, so that you can **work with the documents locally on your computer**. If you want to use this system, change, add documents or develop the display code, you need to apply the following installation instruction:\n\n**Install [npm](https://www.npmjs.com/)** for your operating system. We suggest that you *not* use the (outdated) node version from your default apt repository on Debian/Ubuntu. We use [nodesource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories) to install the latest version of npm and node.js. If you're using Mac OS, then download and install the NPM Install Package from [nodejs.org](https://nodejs.org/download/).\n\nTo clone the documents on your computer, if you don’t have git yet, you need to **install git**. \n\nIf you’re using Ubuntu/Debian then type the following command:\n\n    sudo apt-get install git\n\nIf you’re using Mac OS then follow the installation instruction provided [here](https://git-scm.com/downloads).\n\nAfter completing git installation, you need to **clone the repository**. We use the following command line but you can use a graphical git front-end as well ( [mac](https://help.github.com/categories/github-for-mac/) / [window](https://help.github.com/categories/github-for-windows/) application ):\n    \n    git clone https://github.com/consortium/hybrid-publishing-research.git\n\nAt that point, you have installed the app that contains the documents and the viewing- and validation code.\nYou now need to install all required dependencies in order for the system to work. This is quite easy: all you need is to copy\u0026paste the following commands in your terminal.\n\nOpen your terminal and change directory to hybrid-publishing-research, running the command `cd` and the directory path:\n\n    cd hybrid-publishing-research/\n\nNow it’s time to **install grunt** globally ( = for all users on the system).\nCopy\u0026paste the following command in your terminal:\n\n    sudo npm install -g grunt-cli\n\nYou need administrative access to install npm packages globally, so it will ask you your password: put your computer login password. (don’t worry if it doesn’t show what you type, it is normal, type it and press enter)\n\n**Install all other node dependencies** (non-globally) via npm, with this command:\n\n    npm install\n\n(if you have error messages, saying you don’t have the right to access, go to the [troubleshouting](#troubleshouting) section)\n\nAll packages will automatically be installed in the folder `./node_modules`. With all the node packages installed, all you need now is to install all the front-end libraries that are used in the browser. In order to do this, **use grunt to load all libraries and generate all needed files**. \nGrunt will do three things:\n* Grunt updates the packages, prepares and installs the front-end libraries (makes one small file out of the different stylesheets and javascripts files).\n* Grunt validates the files\n* Grunt runs the metaparser to get all the metadata and the datas into one file, it generates the index.html.\nType the following command:\n\n      grunt \n\nNow you have all the files up-to-date and ready for editing (the modifications will be saved on your local version, until you push them in GitHub).\nYou can now **use grunt to visualise the local files in your browser** (not yet published online). To visualise the files, type the following command in the terminal:\n\n      grunt serve\n\nA browser window will now open automatically, in which you will be able to visualise the documents:  [http://localhost:8080](http://localhost:8080)\n\nTo exit the webserver type `ctrl-c` in the terminal.\n\nIf you have any problem, don’t hesitate to report an issue on github or send us an email.\n\n### Troubleshouting\n\nIf you run `npm install` in the terminal (in the repository folder) and it doesn’t work, no panic: \n\nmake sure you are in the repository folder, and if you are, run:\n\n    rm -rf node_modules/\n\nand then start back where you where.\n\n## Edit or add content\n\nHave a look at the content of your git repository (in your operating files, like Finder in Mac). Amongst the folders, you can see a folder `dist`, and in this folder another one called `docs`. In the folder `docs` is a folder called `_template`, that you can copy, rename and edit to create a new document.\nNote: never use spaces in the folders and files names\n\nThis repository is equipped with a node.js setup, so that you can serve the documents in your local network. Integrated in node.js is a code validator, which checks your edited or newly added html documents for errors and inconsistencies. We are using [grunt](http://gruntjs.com/) and several plugins to trigger building, validation and delivering tasks.\n\n\u003e THIS STEP IS OPTIONAL: (if you want to share your modifications with others, you can publish it on a branch, which will not be published on the site by the whole system)\n\n\u003e You need to install this setup described above in the installation section. Once you have done this, create a new git branch with the following command:\n\n\u003e     git checkout -b mybranch\n\nEdit the files with your favourite text editor. You can copy the template folder as a starting point for your new document. Use:\n\n    cp -r dist/docs/_template dist/docs/mynewdoc\n\nRemember only one html document is allowed per folder. All other assets should be placed in sub folders of assets (for instance in a new folder `fonts` for fonts, or `video` for videos). Once you have written your new document (or edited an old one), then start a validation round to check if your new added content is valid. \nIf you only worked on the html files, type:\n\n    grunt index\n\nIt will validate your new files in the terminal, and if everything is ok it will generate the visualisation of the new files in the browser.\n\nEvery html document that is in the dist/docs folder (ommitting _template), will be checked by the validator in two steps.\n\nStep one checks the html5 validity described by the [w3c](http://validator.w3.org/). This step will show you if your document has unvalid code according to the html5 standard. This will be signalled to you in red in the command line output. See following example:\n    \n    Validation started for.. dist/docs/mynewdoc/x-html-example.html\n    Running \"validation:files\" (validation) task\n\n    1=\u003e \"\u0026 did not start a character reference. (\u0026 probably should have been escaped as \u0026amp;.)\" Line no: 33\n    2=\u003e \"Consider using the h1 element as a top-level heading only (all h1 elements are treated as top-level headings by many screen readers and other tools).\" Line no: 47\n    3=\u003e \"Saw \u003c when expecting an attribute name. Probable cause: Missing \u003e immediately before.\" Line no: 65\n    4=\u003e \"A slash was not immediately followed by \u003e.\" Line no: 65\n    5=\u003e \"End tag had attributes.\" Line no: 65\n\nFor advanced users, if it really fails, you can override validation directives globally. Read the manual (relaxerror) for [grunt-html-validation](https://www.npmjs.com/package/grunt-html-validation) and edit the Gruntfile accordingly. We are using this to override errors on Dublin Core metadata.\n\nThe second step validates the content according to the [Dublin Core meta data standard](http://dublincore.org/metadata-basics/). The output in the terminal could look like this:\n\n    Checking x-html-example.html for required meta data: \n    \u003e\u003e title\n    \u003e\u003e creator\n    \u003e\u003e subject\n    \u003e\u003e abstract\n    \u003e\u003e missing entry: date\n    \u003e\u003e type\n    \u003e\u003e format\n    \u003e\u003e language\n    \u003e\u003e uRL\n    \u003e\u003e rights\n    \u003e\u003e No of errors: 1\n\nIf the command `grunt` or `grunt index` shows errors in the terminal (in red), fix the errors in your files at the indicated lines (via your text editor) and run the validation process again with `grunt` or `grunt index`.\n\nWhen everything is valid, the terminal should say, in green: done without errors!\n\nAfter you have successfully debugged your newly added content, they are ready to be published online.\nIf you are working on a branch, commit your branch to the repository and file a pull request. If you are working in the main (\"master\") repository, push or file a pull request if you are not yet a collaborator of the project. This way the new document can be added to the master branch and the consortium website. Please make sure to add descriptive commit notes to explain what you changed. \n\nIf you are working with GitHub’s application, select, commit and sync through the interface.\nYou can also do it with the Terminal with the following commands (replace the name “mynewdoc” with the name of your folder):\n    \n    git add dist/docs/mynewdoc*\n\n    git commit -m 'Added a cool index on microbreweries - This is still a draft - looking \n    for people who want to help me collect'\n\n    git push origin mybranch\n\nand then go to [https://github.com/consortium/hybrid-publishing-research](https://github.com/consortium/hybrid-publishing-research) and file a pull request.\n(if you need help using git commands see the git reference on [https://git-scm.herokuapp.com/](https://git-scm.herokuapp.com/) or contact us)\n\nYour files are now online, on GitHub and on the website (refreshed every five minutes)!\n\n## Testing\n\nWe're testing html validity on all documents as a part of the publishing pipeline. Right now we are checking rather simply for meta data described by the [dublin core standard](http://purl.org/dc/elements/1.1/). Both test are part of the build process. The build process is tested on command line before index is generated and fails hard if the documents are not valid. In future we maybe add a switch. Additionally on every git commit we build the master branch on [travis-ci](https://travis-ci.org/consortium/hybrid-publishing-research).\n\nOn the roadmap is unit test on the code as well. This will also be part of the publishing pipeline. See additional documentation in dist/docs/documentation for more information or better help improving existing ones.\n\n## Grunt commands\n\nThese are most commonly used commands:\n\n    grunt (default)         -  executes building, validation and indexing\n    grunt serve             -  start webservice\n\nOther grunt task which you will normally not need:\n\n    grunt index                 -  meta command build an index out of all resources\n    grunt build                 -  meta command do all building tasks\n    grunt validation            -  html validation\n    grunt bower-install-simple  -  install bower dependencies\n    grunt bower                 -  extract all files from bower_components and copy to /lib\n    grunt bower_concat          -  concat js and css files\n    grunt cssmin                -  css minification\n    grunt js                    -  meta command do all \"js\" related tasks\n    grunt jshint                -  hint js files\n    grunt uglify                -  minify js\n    grunt qunit                 -  do unit testing \n    grunt metaparser            -  create an index based on metadata\n    grunt execute               -  executes createindex.js \n    grunt gitfetch              -  does git fetch\n    grunt gitreset              -  resets git to latest commit origin/master \n    grunt upgrade               -  meta command upgrade all to latest commit (deleting local changes!)\n\n## File structure\n\nThis is a descriptive view of the file structure:\n\n    .\n    ├── bower_components                ==\u003e frontend source libraries, managed by bower\n    │   ├── angular                         source frontend library\n    │   ├── hybridstrap                     source frontend library\n    │   └── jquery                          source frontend library\n    ├── bower.json                      ==\u003e bower package file describing the dependencies\n    ├── cache                           ==\u003e temporary cache\n    ├── CONTRIBUTING.md                 ==\u003e who did contribute\n    ├── createindex.js                  ==\u003e external script gets executed by grunt - creates an index\n    ├── css                             ==\u003e source css folder\n    │   └── main.css                        custom css code (edit this!)\n    ├── dist                            ==\u003e docroot for webserver\n    │   ├── css                         ==\u003e public css folder\n    │   │   └── all.min.css                 dynamic main css files with ALL necessary directives \n    │   ├── docs                        ==\u003e document repository \n    │   ├── fonts                       ==\u003e fonts repository\n    │   ├── gitinfo.json                    a dynamic json file describing git version will be loaded by index.html\n    │   ├── index.html                      the index.html\n    │   ├── index.json                      a dynamic json file descibing all available documents\n    │   ├── js                              public js folder\n    │   │   ├── all.min.js                  a dynamic concatenated js file with ALL code\n    │   │   └── all.min.js.map              map file for all.min.js\n    │   └── static                      ==\u003e static content\n    │       ├── EFRE-logo.png\n    │       ├── EuropafoerdertNds_farbig.png\n    │       ├── favicon.gif\n    │       ├── hpc-logoxx.png\n    │       └── logo_leuphana-2.png\n    ├── extra                           ==\u003e extra folder to distribute \n    │   ├── researchviewer.service          systemd-script for ubuntu\n    │   └── researchviewer.conf             startup-script for ubuntu \n    ├── Gruntfile.js                        Gruntfile with all tasks\n    ├── js                              ==\u003e source js folder\n    │   └── consortium-viewer.js            custom js code (edit this!)\n    ├── lib                             ==\u003e dynamic folder for grunt bower managed by grunt\n    ├── LICENSE                             the license\n    ├── metadata.json                       dynamic json describing meta data - generated by grunt-metaparser\n    ├── node_modules                    ==\u003e node folder managed by npm\n    ├── package.json                        npm package file describing npm dependencies\n    ├── README.md                           this file\n    ├── test                            ==\u003e automatic tests N/a yet\n    ├── validation-report.json              dynamic file generated by grunt-validator\n    └── validation-status.json              dynamic file generated by grunt-validator\n\n## Metadata\n\n    \u003c!-- Metatags --\u003e\n    \u003cmeta charset=\"utf-8\" /\u003e \u003c!-- doesn’t need editing --\u003e\n    \u003cmeta name=\"generator\" content=\"a-machine\" /\u003e \u003c!-- doesn’t need editing --\u003e\n    \u003cmeta name=\"keywords\" content=\"a-machine, hybrid publishing consortium, template\"/\u003e \u003c!-- edit: each keyword separated by a comma (10 is a good number) --\u003e\n    \u003cmeta name=\"description\" content=\"About your document: description\"/\u003e \u003c!-- edit: text, sentences --\u003e\n    \u003cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"/\u003e \u003c!-- doesn’t need editing --\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/\u003e \u003c!-- doesn’t need editing --\u003e\n    \u003c!-- Dublin Core --\u003e\n    \u003cmeta name=\"DC.title\" content=\"My document title\"/\u003e \u003c!-- doesn’t need editing --\u003e\n    \u003cmeta name=\"DC.contributor\" content=\"the author: a person, an organization, or a service. For each author make a new meta author\"/\u003e \u003c!-- edit - one meta tag per author --\u003e\n    \u003cmeta name=\"DC.creator\" content=\"creator of this HTML document (not the author, just the person who generated the file)\" /\u003e \u003c!-- edit --\u003e\n    \u003cmeta name=\"DC.subject\" content=\"keywords, key phrases, or classification codes, best using controlled vocabularies\"\u003e \u003c!-- edit: comma separated (can be more than the keywords) --\u003e\n    \u003cmeta name=\"DC.description.abstract\" content=\"About the document: description abstract\"/\u003e \u003c!-- edit: copy of the desciption --\u003e\n    \u003cmeta name=\"DC.date\" content=\"\"/\u003e \u003c!-- edit: yyyy-mm-dd --\u003e\n    \u003cmeta name=\"DC.type\" content=\"The nature or genre of the report, research paper, article, essay, etc.\"/\u003e \u003c!-- edit: choose one --\u003e\n    \u003cmeta name=\"DC.format\" content=\"text/html\"/\u003e \u003c!-- doesn’t need editing --\u003e\n    \u003cmeta name=\"DC.language\" content=\"eng\"/\u003e \u003c!-- if edit ISO 639-3 standard: http://en.wikipedia.org/wiki/ISO_639:a --\u003e\n    \u003cmeta name=\"DC.identifier.URL\" content=\"http://consortium.io\"/\u003e \u003c!-- if edit: put a url --\u003e\n    \u003cmeta name=\"DC.rights\" content=\"http://www.consortium.io/copyright\"/\u003e \u003c!-- if edit: put a url --\u003e\n    \u003cmeta name=\"DC.identifier\" content=\"ISBN, ISSN etc\"/\u003e \u003c!-- edit, and if no identifier it will be generated --\u003e\n    \u003cmeta name=\"DC.publisher\" content=\"Hybrid Publishing Consortium. Entity responsible for making the document available\"/\u003e \u003c!-- edit: for each publisher a new meta tag --\u003e\n    \u003cmeta name=\"DC.bibliographicCitation\" content=\"use a Chicago Manual of Style citation\"/\u003e \u003c!-- doesn’t need editing --\u003e\n    \u003clink rel=\"SCHEMA.DC\" href=\"http://purl.org/dc/elements/1.1/\"/\u003e \u003c!-- doesn’t need editing --\u003e\n    \u003c!-- CSS --\u003e\n    \u003clink rel=\"stylesheet\" type=\"text/css\" href=\"../../css/all.min.css\"/\u003e\n    \u003clink rel=\"stylesheet\" type=\"text/css\" href=\"../../fonts.css\"/\u003e\n    \u003c!-- Title --\u003e\n    \u003ctitle\u003eMy document title\u003c/title\u003e\n    \u003c!-- Favicons --\u003e\n    \u003clink rel=\"shortcut icon\" href=\"../../favicon.ico\" /\u003e\n\n## Roadmap\n    \n    0.0.1 DATA GLOVE: Getting Initial version stable\n    0.0.2 FREE ADVISE: Redo validation, make URLs, data structure and folder layout not as stupid as they are now and more \n    0.0.3 Completely change viewing logic with new data structure and api delivery\n    0.0.4 Create http-api-grunt-trigger for upgrade and other things\n\n## To do\n    see github issues\n\n## Coding style\n\n    Indentation: 4 characters, no tabs use spaces.\n\nRecommended style guides: [https://code.google.com/p/google-styleguide/](https://code.google.com/p/google-styleguide/)\n\n## License\n\n    Dossiers:\n\n        If not mentioned otherwise in the document the text is licensed\n        under the Creative Commons CC-BY-DE 3.0 License.\n\n        Copyright holder of text and images are by their authors and owners\n\n    Viewer Logic:\n\n        The MIT License (MIT)\n        \n        Copyright (c) 2015 Hybrid Publishing Consortium\n            Johannes Amorosa \u003camorosa@posteo.de\u003e\n            Christina Kral\n            Loraine Furter\n            Simon Worthington\n            \n\n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n\n        The above copyright notice and this permission notice shall be included in\n        all copies or substantial portions of the Software.\n\n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n        THE SOFTWARE.\n\n    Fonts: (SIL Open Font License, 1.1)\n        Bagnard, Cotham, Reglo by Sebastien Sanfilippo\n        NotCourierSans by OSP Foundry\n        Charter by Matthew Carter\n        Lato by Łukasz Dziedzic\n        Montserrat by Julieta Ulanovsky\n\n    Software used:\n    \n        Copyright (c) the copyright owners\n\n        angularjs bootstrap jquery bower grunt node underscore express mustache\n        socket.io assemble grunt grunt-autoprefixer grunt-contrib-connect \n        grunt-contrib-cssmin grunt-contrib-jshint grunt-contrib-qunit grunt-contrib-uglify \n        grunt-contrib-watch grunt-fileindex grunt-html-sitemap grunt-bower-concat \n        grunt-html-validation grunt-bower grunt-sass grunt-zip node-sass\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconsortium%2Fhybrid-publishing-research","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconsortium%2Fhybrid-publishing-research","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconsortium%2Fhybrid-publishing-research/lists"}