**Project Information **
* Name of tool/project: #Toolhub
* Project home page: https://meta.wikimedia.org/wiki/Toolhub
* Name of team requesting review: #developer-advocacy
* Primary contact: @bd808
* Target date for deployment: August 12, 2021 (T271483)
* Link to code repository / patchset: https://gerrit.wikimedia.org/r/admin/repos/wikimedia/toolhub
**Description of the tool/project: **
The Toolhub project is an effort to catalog the various software tools used in the Wikimedia movement. It seeks to fulfill the core desires expressed by {T115650} by providing a storage database, HTTP API, and user interface for collecting, creating, displaying, and searching 'toolinfo' records describing various tools invented by, maintained by, or simply useful to the Wikimedia community.
**Description of how the tool will be used at WMF:**
Toolhub is expected to be deployed into the 'production' Kubernetes cluster with connections to database and other supporting services hosted on Wikimedia Foundation infrastructure. This service will then be exposed as https://toolhub.wikimedia.org/ to the general public. The app will execute periodic jobs to populate its database with a combination of externally sourced toolinfo.json data and locally maintained data. The app also exposes a HTTP API and local OAuth provider which can be used by 3rd parties (for example Toolforge tool maintainers) to build tools which interact with the Toolhub managed data. This API is used by the [[https://en.wikipedia.org/wiki/Single-page_application|SPA]] frontend delivered as a core feature of Toolhub.
**Dependencies**
* Python 3.7.x
* [[https://docs.djangoproject.com/en/2.2/|Django 2.2.x]]
* Various python libraries documented in the '[tool.poetry.dependencies]' section of the project's [[https://gerrit.wikimedia.org/r/plugins/gitiles/wikimedia/toolhub/+/refs/heads/main/pyproject.toml|pyproject.toml]] config file
* NodeJS 10.x
* [[https://vuejs.org/|Vue.js]] 2.x
* [[https://vuetifyjs.com/|Vuetify]] 2.x
* Various npm libraries documented in the 'dependencies' section of the project's [[https://gerrit.wikimedia.org/r/plugins/gitiles/wikimedia/toolhub/+/refs/heads/main/package.json|package.json]] config file
* MySQL/MariaDB
* Memcached
* Redis
* Elasticsearch
* MediaWiki OAuth 2.0
**Has this project been reviewed before?**
No
**Working test environment**
Toolhub's development environment is designed to allow you to test and run
everything from inside of a collection of Docker containers managed with
Docker Compose. The git repo contains a Makefile in its root directory that
should make working with `docker-compose` easier.
```
$ git clone "https://gerrit.wikimedia.org/r/wikimedia/toolhub"
$ cd toolhub
$ make init
```
**n.b.** There is a webpack build step that occurs within the `nodejs_1` container. This may take **up to 5 minutes to complete** under certain circumstance. So if you see a webpack-related error when attempting to access localhost:8000, you likely just need to wait a few minutes. As noted by @bd808 below, the status of this process can be tracked by running `make tail` after `make init` completes.
**Post-deployment**
#developer-advocacy will continue to own the project following deployment to the Wikimedia Foundation's 'production' Kubernetes cluster with @bd808 as the primary contact.