From 680321527a74428ee7961e9a9052d67b6e4c93ba Mon Sep 17 00:00:00 2001
From: Julien Bisconti
Date: Wed, 8 Aug 2018 12:22:43 +0200
Subject: [PATCH] Add category to table page
---
build.js | 113 +-
buildMetadata.js | 2 +-
data/category.json | 157 +++
data/mapping.json | 1497 +++++++++++++++++++++
data/{list_repos.json => repository.json} | 5 +-
website/index.js | 2 +-
website/table.tmpl.html | 21 +-
7 files changed, 1758 insertions(+), 39 deletions(-)
create mode 100644 data/category.json
create mode 100644 data/mapping.json
rename data/{list_repos.json => repository.json} (99%)
diff --git a/build.js b/build.js
index d982802..a921f9e 100644
--- a/build.js
+++ b/build.js
@@ -1,4 +1,5 @@
const fs = require('fs-extra');
+const fetch = require('node-fetch');
const cheerio = require('cheerio');
const dayjs = require('dayjs');
const showdown = require('showdown');
@@ -25,11 +26,14 @@ const README = 'README.md';
const WEBSITE_FOLDER = 'website';
const DATA_FOLDER = 'data';
const LATEST_FILENAME = `${DATA_FOLDER}/latest`;
+const MAPPING = `${DATA_FOLDER}/mapping.json`;
+const CATEGORY = `${DATA_FOLDER}/category.json`;
const indexTemplate = `${WEBSITE_FOLDER}/index.tmpl.html`;
const indexDestination = `${WEBSITE_FOLDER}/index.html`;
const tableTemplate = `${WEBSITE_FOLDER}/table.tmpl.html`;
const tableDestination = `${WEBSITE_FOLDER}/table.html`;
+// --- CONFIG
const valueNames = [
'name',
'description',
@@ -62,6 +66,25 @@ const sitemapOpts = {
],
};
+// --- FORMAT
+const loadEmoji = () =>
+ fetch('https://api.github.com/emojis')
+ .then(r => r.json())
+ .catch(handleFailure);
+
+let emojiMapURL = {};
+
+const emojify = text => {
+ if (!text) return text;
+ const colonWrapped = /(:[\w\-+]+:)/g;
+ const result = text.replace(colonWrapped, match => {
+ const name = match.replace(/:/g, '');
+ const url = emojiMapURL[name];
+ return ``;
+ });
+ return result || text;
+};
+
const getLastUpdate = updated => {
const updt = Number(dayjs(updated).diff(dayjs(), 'days'));
if (updt < 0) {
@@ -94,17 +117,24 @@ const formatEntry = (
description,
homepage,
stargazers_count: stargazers,
+ // subscribers_count: watchers,
pushed_at: updated,
+ // open_issues: issues,
+ // forks,
language,
license,
owner,
+ categoryName,
+ // categoryDescription,
+ // status,
+ // ownerType,
},
i,
) =>
[
``,
`${name}`,
- `${description || '-'}
`,
+ `${emojify(description) || '-'}
`,
`Last code update: ${getLastUpdate(
@@ -117,7 +147,7 @@ const formatEntry = (
'
',
`⭐️${stargazers}
`,
+ } timestamp" title="Stars on GitHub" data-timestamp="${stargazers}">⭐️${stargazers}
`,
(language && `${language}
`) || '',
(license &&
license.url !== null &&
@@ -125,37 +155,76 @@ const formatEntry = (
license.name,
)}`) ||
'',
+ `${categoryName}
`,
owner &&
- `Made by
${owner.login}`,
+ `${
+ owner.login
+ }`,
'',
].join('');
+const buttonHTLM = valueNames
+ .filter(x => !['description', 'homepage'].includes(x))
+ .map(v => ``)
+ .join('');
+
+const processMetadata = metaData =>
+ [
+ ``,
+ '',
+ Object.values(metaData)
+ .map(formatEntry)
+ .join(''),
+ '
',
+ ].join('');
+
+const normalizedMetadata = ([mapping, category, data]) =>
+ data.reduce((acc, repo) => {
+ const m = mapping[repo.html_url];
+ if (!m) {
+ console.log('MISSING:', { repo: repo.html_url });
+ return acc;
+ }
+ const c = m && category[m.category];
+ if (!c) {
+ console.log('CATEGORY MISSING', { mapping: m });
+ return acc;
+ }
+ return {
+ ...acc,
+ ...{
+ [repo.html_url.toLowerCase()]: {
+ ...repo,
+ ownerType: repo.owner && repo.owner.type,
+ categoryName: c.name,
+ categoryDescription: c.description,
+ status: m.status,
+ },
+ },
+ };
+ }, {});
+
async function processTable() {
try {
LOG.debug('Loading files...', { LATEST_FILENAME, tableTemplate });
const latestFilename = await fs.readFile(LATEST_FILENAME, 'utf8');
LOG.debug({ latestFilename });
- const metaData = await fs.readJson(latestFilename, 'utf-8');
+ const data = await Promise.all([
+ fs.readJSON(MAPPING),
+ fs.readJSON(CATEGORY),
+ fs.readJSON(latestFilename),
+ ]);
+
+ const metaData = normalizedMetadata(data);
+ LOG.debug({ metaData });
const template = await fs.readFile(tableTemplate, 'utf8');
+ LOG.debug('Processing template');
const $ = cheerio.load(template);
- const btn = valueNames.map(
- v => ``,
- );
- $('#md').append(
- [
- ``,
- '',
- metaData.map(formatEntry).join(''),
- '
',
- ].join(''),
- );
-
+ $('#md').append(processMetadata(metaData));
LOG.debug('Writing table.html');
await fs.outputFile(tableDestination, $.html(), 'utf8');
LOG.debug('✅ DONE 👍');
@@ -193,7 +262,6 @@ async function processIndex() {
LOG.debug('Merging files...');
const $ = cheerio.load(template);
-
$('#md').append(converter.makeHtml(markdown));
LOG.debug('Writing index.html');
@@ -224,6 +292,7 @@ const bundle = () => {
};
async function main() {
+ emojiMapURL = await loadEmoji();
await processTable();
await processIndex();
await bundle();
diff --git a/buildMetadata.js b/buildMetadata.js
index c0614f8..f1a425f 100644
--- a/buildMetadata.js
+++ b/buildMetadata.js
@@ -34,7 +34,7 @@ const README = 'README.md';
const DATE = dayjs().format('YYYY-MM-DDTHH.mm.ss');
const GITHUB_METADATA_FILE = `${DATA_FOLDER}/${DATE}-fetched_repo_data.json`;
const LATEST_FILENAME = `${DATA_FOLDER}/latest`;
-const GITHUB_REPOS = `${DATA_FOLDER}/list_repos.json`;
+const GITHUB_REPOS = `${DATA_FOLDER}/repository.json`;
// --- HTTP ---
const API = 'https://api.github.com/';
diff --git a/data/category.json b/data/category.json
new file mode 100644
index 0000000..c628305
--- /dev/null
+++ b/data/category.json
@@ -0,0 +1,157 @@
+[
+ {
+ "id": 0,
+ "name": "Others",
+ "description": "Awesome projects"
+ },
+ {
+ "id": 1,
+ "name": "Container Operations",
+ "description": "description"
+ },
+ {
+ "id": 2,
+ "name": "Container Composition",
+ "description": "description"
+ },
+ {
+ "id": 3,
+ "name": "Deployment and Infrastructure",
+ "description": "description"
+ },
+ {
+ "id": 4,
+ "name": "Monitoring",
+ "description": "description"
+ },
+ {
+ "id": 5,
+ "name": "Networking",
+ "description": "description"
+ },
+ {
+ "id": 6,
+ "name": "Orchestration",
+ "description": "description"
+ },
+ {
+ "id": 7,
+ "name": "PaaS",
+ "description": "description"
+ },
+ {
+ "id": 8,
+ "name": "Reverse Proxy",
+ "description": "description"
+ },
+ {
+ "id": 9,
+ "name": "Security",
+ "description": "description"
+ },
+ {
+ "id": 10,
+ "name": "Service Discovery",
+ "description": "description"
+ },
+ {
+ "id": 11,
+ "name": "Volume Management / Data",
+ "description": "description"
+ },
+ {
+ "id": 12,
+ "name": "User Interface / Desktop",
+ "description": "description"
+ },
+ {
+ "id": 13,
+ "name": "User Interface / Terminal",
+ "description": "description"
+ },
+ {
+ "id": 14,
+ "name": "User Interface / Web",
+ "description": "description"
+ },
+ {
+ "id": 15,
+ "name": "Docker Images",
+ "description": "description"
+ },
+ {
+ "id": 16,
+ "name": "Base Tools",
+ "description": "description"
+ },
+ {
+ "id": 17,
+ "name": "Builder",
+ "description": "description"
+ },
+ {
+ "id": 18,
+ "name": "Dockerfile",
+ "description": "description"
+ },
+ {
+ "id": 19,
+ "name": "Linter",
+ "description": "description"
+ },
+ {
+ "id": 20,
+ "name": "Metadata",
+ "description": "description"
+ },
+ {
+ "id": 21,
+ "name": "Registry",
+ "description": "description"
+ },
+ {
+ "id": 22,
+ "name": "Development with Docker",
+ "description": "description"
+ },
+ {
+ "id": 23,
+ "name": "API Client",
+ "description": "description"
+ },
+ {
+ "id": 24,
+ "name": "CI/CD",
+ "description": "description"
+ },
+ {
+ "id": 25,
+ "name": "Development Environment",
+ "description": "description"
+ },
+ {
+ "id": 26,
+ "name": "Garbage Collection",
+ "description": "description"
+ },
+ {
+ "id": 27,
+ "name": "Serverless",
+ "description": "description"
+ },
+ {
+ "id": 28,
+ "name": "Testing",
+ "description": "description"
+ },
+ {
+ "id": 29,
+ "name": "Wrappers",
+ "description": "description"
+ },
+ {
+ "id": 30,
+ "name": "Where to start",
+ "description": "description"
+ }
+]
diff --git a/data/mapping.json b/data/mapping.json
new file mode 100644
index 0000000..e8f4ab1
--- /dev/null
+++ b/data/mapping.json
@@ -0,0 +1,1497 @@
+{
+ "https://github.com/sindresorhus/awesome": {
+ "url": "https://github.com/sindresorhus/awesome",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/veggiemonk/awesome-docker": {
+ "url": "https://github.com/veggiemonk/awesome-docker",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/dkhamsing/awesome_bot": {
+ "url": "https://github.com/dkhamsing/awesome_bot",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/machzqcq/docker-for-all": {
+ "url": "https://github.com/machzqcq/docker-for-all",
+ "status": "active",
+ "category": 30
+ },
+ "https://github.com/odewahn/docker-jumpstart": {
+ "url": "https://github.com/odewahn/docker-jumpstart",
+ "status": "active",
+ "category": 30
+ },
+ "https://github.com/dwyl/learn-docker": {
+ "url": "https://github.com/dwyl/learn-docker",
+ "status": "active",
+ "category": 30
+ },
+ "https://github.com/eon01/DockerCheatSheet": {
+ "url": "https://github.com/eon01/DockerCheatSheet",
+ "status": "active",
+ "category": 30
+ },
+ "https://github.com/moby/moby": {
+ "url": "https://github.com/moby/moby",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/docker/compose": {
+ "url": "https://github.com/docker/compose",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/docker/machine": {
+ "url": "https://github.com/docker/machine",
+ "status": "active",
+ "category": 1
+ },
+ "https://github.com/docker/swarm": {
+ "url": "https://github.com/docker/swarm",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/icy/bocker": {
+ "url": "https://github.com/icy/bocker",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/p8952/bocker": {
+ "url": "https://github.com/p8952/bocker",
+ "status": "archived",
+ "category": 2
+ },
+ "https://github.com/box-builder/box": {
+ "url": "https://github.com/box-builder/box",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/byrnedo/capitan": {
+ "url": "https://github.com/byrnedo/capitan",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/funkwerk/compose_plantuml": {
+ "url": "https://github.com/funkwerk/compose_plantuml",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/magicmark/composerize": {
+ "url": "https://github.com/magicmark/composerize",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/polonskiy/crowdr": {
+ "url": "https://github.com/polonskiy/crowdr",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/abesto/docker-compose-graphviz": {
+ "url": "https://github.com/abesto/docker-compose-graphviz",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/Alexis-benoist/draw-compose": {
+ "url": "https://github.com/Alexis-benoist/draw-compose",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/cisco/elsy": {
+ "url": "https://github.com/cisco/elsy",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/cloud66-oss/habitus": {
+ "url": "https://github.com/cloud66-oss/habitus",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/toscanini/maestro": {
+ "url": "https://github.com/toscanini/maestro",
+ "status": "archived",
+ "category": 2
+ },
+ "https://github.com/ihucos/plash": {
+ "url": "https://github.com/ihucos/plash",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/grammarly/rocker-compose": {
+ "url": "https://github.com/grammarly/rocker-compose",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/grammarly/rocker": {
+ "url": "https://github.com/grammarly/rocker",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/stacker/stacker-cli": {
+ "url": "https://github.com/stacker/stacker-cli",
+ "status": "active",
+ "category": 2
+ },
+ "https://github.com/CenturyLinkLabs/zodiac": {
+ "url": "https://github.com/CenturyLinkLabs/zodiac",
+ "status": "archived",
+ "category": 2
+ },
+ "https://github.com/newrelic/centurion": {
+ "url": "https://github.com/newrelic/centurion",
+ "status": "active",
+ "category": 3
+ },
+ "https://github.com/brooklyncentral/clocker": {
+ "url": "https://github.com/brooklyncentral/clocker",
+ "status": "active",
+ "category": 3
+ },
+ "https://github.com/ehazlett/conduit": {
+ "url": "https://github.com/ehazlett/conduit",
+ "status": "active",
+ "category": 3
+ },
+ "https://github.com/ContainX/depcon": {
+ "url": "https://github.com/ContainX/depcon",
+ "status": "active",
+ "category": 3
+ },
+ "https://github.com/ttiny/deploy": {
+ "url": "https://github.com/ttiny/deploy",
+ "status": "archived",
+ "category": 3
+ },
+ "https://github.com/humblec/dockit": {
+ "url": "https://github.com/humblec/dockit",
+ "status": "archived",
+ "category": 3
+ },
+ "https://github.com/hasura/gitkube": {
+ "url": "https://github.com/hasura/gitkube",
+ "status": "active",
+ "category": 3
+ },
+ "https://github.com/grafeas/grafeas": {
+ "url": "https://github.com/grafeas/grafeas",
+ "status": "active",
+ "category": 3
+ },
+ "https://github.com/longshoreman/longshoreman": {
+ "url": "https://github.com/longshoreman/longshoreman",
+ "status": "archived",
+ "category": 3
+ },
+ "https://github.com/axibase/atsd-use-cases": {
+ "url": "https://github.com/axibase/atsd-use-cases",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/google/cadvisor": {
+ "url": "https://github.com/google/cadvisor",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/deltaskelta/docker-alertd": {
+ "url": "https://github.com/deltaskelta/docker-alertd",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/docker-flow/docker-flow-monitor": {
+ "url": "https://github.com/docker-flow/docker-flow-monitor",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/dockerana/dockerana": {
+ "url": "https://github.com/dockerana/dockerana",
+ "status": "archived",
+ "category": 4
+ },
+ "https://github.com/nicolargo/glances": {
+ "url": "https://github.com/nicolargo/glances",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/vegasbrianc/docker-monitoring": {
+ "url": "https://github.com/vegasbrianc/docker-monitoring",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/gocardless/logjam": {
+ "url": "https://github.com/gocardless/logjam",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/sematext/logagent-js": {
+ "url": "https://github.com/sematext/logagent-js",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/gliderlabs/logspout": {
+ "url": "https://github.com/gliderlabs/logspout",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/uschtwill/docker_monitoring_logging_alerting": {
+ "url": "https://github.com/uschtwill/docker_monitoring_logging_alerting",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/monitoringartist/Zabbix-Docker-Monitoring": {
+ "url": "https://github.com/monitoringartist/Zabbix-Docker-Monitoring",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/gomex/docker-zabbix": {
+ "url": "https://github.com/gomex/docker-zabbix",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/coreos/flannel": {
+ "url": "https://github.com/coreos/flannel",
+ "status": "active",
+ "category": 5
+ },
+ "https://github.com/nicolaka/netshoot": {
+ "url": "https://github.com/nicolaka/netshoot",
+ "status": "active",
+ "category": 5
+ },
+ "https://github.com/athena-oss/athena": {
+ "url": "https://github.com/athena-oss/athena",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/tubesandlube/blimp": {
+ "url": "https://github.com/tubesandlube/blimp",
+ "status": "archived",
+ "category": 6
+ },
+ "https://github.com/CloudSlang/cloud-slang": {
+ "url": "https://github.com/CloudSlang/cloud-slang",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/clusterdock/clusterdock": {
+ "url": "https://github.com/clusterdock/clusterdock",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/containership/containership": {
+ "url": "https://github.com/containership/containership",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/Dataman-Cloud/crane": {
+ "url": "https://github.com/Dataman-Cloud/crane",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/vfarcic/docker-flow-swarm-listener": {
+ "url": "https://github.com/vfarcic/docker-flow-swarm-listener",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/DevTable/gantryd": {
+ "url": "https://github.com/DevTable/gantryd",
+ "status": "archived",
+ "category": 6
+ },
+ "https://github.com/codeabovelab/haven-platform": {
+ "url": "https://github.com/codeabovelab/haven-platform",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/spotify/helios": {
+ "url": "https://github.com/spotify/helios",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/kontena/kontena": {
+ "url": "https://github.com/kontena/kontena",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/kubernetes/kubernetes": {
+ "url": "https://github.com/kubernetes/kubernetes",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/ManageIQ/manageiq": {
+ "url": "https://github.com/ManageIQ/manageiq",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/mantl/mantl": {
+ "url": "https://github.com/mantl/mantl",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/mesosphere/marathon": {
+ "url": "https://github.com/mesosphere/marathon",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/apache/mesos": {
+ "url": "https://github.com/apache/mesos",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/hashicorp/nomad": {
+ "url": "https://github.com/hashicorp/nomad",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/CenturyLinkLabs/panamax-ui": {
+ "url": "https://github.com/CenturyLinkLabs/panamax-ui",
+ "status": "archived",
+ "category": 6
+ },
+ "https://github.com/rancher/rancher": {
+ "url": "https://github.com/rancher/rancher",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/swarmpit/swarmpit": {
+ "url": "https://github.com/swarmpit/swarmpit",
+ "status": "active",
+ "category": 6
+ },
+ "https://github.com/ooyala/atlantis": {
+ "url": "https://github.com/ooyala/atlantis",
+ "status": "archived",
+ "category": 7
+ },
+ "https://github.com/githubsaturn/captainduckduck": {
+ "url": "https://github.com/githubsaturn/captainduckduck",
+ "status": "active",
+ "category": 7
+ },
+ "https://github.com/convox/rack": {
+ "url": "https://github.com/convox/rack",
+ "status": "active",
+ "category": 7
+ },
+ "https://github.com/pbertera/dcw": {
+ "url": "https://github.com/pbertera/dcw",
+ "status": "active",
+ "category": 7
+ },
+ "https://github.com/remind101/empire": {
+ "url": "https://github.com/remind101/empire",
+ "status": "active",
+ "category": 7
+ },
+ "https://github.com/flynn/flynn": {
+ "url": "https://github.com/flynn/flynn",
+ "status": "active",
+ "category": 7
+ },
+ "https://github.com/nanobox-io/nanobox": {
+ "url": "https://github.com/nanobox-io/nanobox",
+ "status": "active",
+ "category": 7
+ },
+ "https://github.com/tsuru/tsuru": {
+ "url": "https://github.com/tsuru/tsuru",
+ "status": "active",
+ "category": 7
+ },
+ "https://github.com/deis/workflow": {
+ "url": "https://github.com/deis/workflow",
+ "status": "active",
+ "category": 7
+ },
+ "https://github.com/zeit/now-cli": {
+ "url": "https://github.com/zeit/now-cli",
+ "status": "active",
+ "category": 7
+ },
+ "https://github.com/vfarcic/docker-flow-proxy": {
+ "url": "https://github.com/vfarcic/docker-flow-proxy",
+ "status": "active",
+ "category": 8
+ },
+ "https://github.com/silarsis/docker-proxy": {
+ "url": "https://github.com/silarsis/docker-proxy",
+ "status": "archived",
+ "category": 8
+ },
+ "https://github.com/fabiolb/fabio": {
+ "url": "https://github.com/fabiolb/fabio",
+ "status": "active",
+ "category": 8
+ },
+ "https://github.com/zchee/h2o-proxy": {
+ "url": "https://github.com/zchee/h2o-proxy",
+ "status": "archived",
+ "category": 8
+ },
+ "https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion": {
+ "url": "https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion",
+ "status": "active",
+ "category": 8
+ },
+ "https://github.com/mattallty/muguet": {
+ "url": "https://github.com/mattallty/muguet",
+ "status": "active",
+ "category": 8
+ },
+ "https://github.com/tpbowden/swarm-ingress-router": {
+ "url": "https://github.com/tpbowden/swarm-ingress-router",
+ "status": "active",
+ "category": 8
+ },
+ "https://github.com/flavioaiello/swarm-router": {
+ "url": "https://github.com/flavioaiello/swarm-router",
+ "status": "active",
+ "category": 8
+ },
+ "https://github.com/containous/traefik": {
+ "url": "https://github.com/containous/traefik",
+ "status": "active",
+ "category": 8
+ },
+ "https://github.com/anchore/anchore": {
+ "url": "https://github.com/anchore/anchore",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/genuinetools/bane": {
+ "url": "https://github.com/genuinetools/bane",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/dev-sec/cis-docker-benchmark": {
+ "url": "https://github.com/dev-sec/cis-docker-benchmark",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/coreos/clair": {
+ "url": "https://github.com/coreos/clair",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/eliasgranderubio/dagda": {
+ "url": "https://github.com/eliasgranderubio/dagda",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/docker/docker-bench-security": {
+ "url": "https://github.com/docker/docker-bench-security",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/google/docker-explorer": {
+ "url": "https://github.com/google/docker-explorer",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/theupdateframework/notary": {
+ "url": "https://github.com/theupdateframework/notary",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/OpenSCAP/openscap": {
+ "url": "https://github.com/OpenSCAP/openscap",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/draios/falco": {
+ "url": "https://github.com/draios/falco",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/cpuguy83/docker-grand-ambassador": {
+ "url": "https://github.com/cpuguy83/docker-grand-ambassador",
+ "status": "archived",
+ "category": 10
+ },
+ "https://github.com/gliderlabs/docker-consul": {
+ "url": "https://github.com/gliderlabs/docker-consul",
+ "status": "active",
+ "category": 10
+ },
+ "https://github.com/coreos/etcd": {
+ "url": "https://github.com/coreos/etcd",
+ "status": "active",
+ "category": 10
+ },
+ "https://github.com/istio/istio": {
+ "url": "https://github.com/istio/istio",
+ "status": "active",
+ "category": 10
+ },
+ "https://github.com/factorish/proxy": {
+ "url": "https://github.com/factorish/proxy",
+ "status": "archived",
+ "category": 10
+ },
+ "https://github.com/gliderlabs/registrator": {
+ "url": "https://github.com/gliderlabs/registrator",
+ "status": "active",
+ "category": 10
+ },
+ "https://github.com/blockbridge/blockbridge-docker-volume": {
+ "url": "https://github.com/blockbridge/blockbridge-docker-volume",
+ "status": "active",
+ "category": 11
+ },
+ "https://github.com/rancher/convoy": {
+ "url": "https://github.com/rancher/convoy",
+ "status": "active",
+ "category": 11
+ },
+ "https://github.com/adlogix/docker-machine-nfs": {
+ "url": "https://github.com/adlogix/docker-machine-nfs",
+ "status": "active",
+ "category": 11
+ },
+ "https://github.com/leighmcculloch/docker-unison": {
+ "url": "https://github.com/leighmcculloch/docker-unison",
+ "status": "active",
+ "category": 11
+ },
+ "https://github.com/CWSpear/local-persist": {
+ "url": "https://github.com/CWSpear/local-persist",
+ "status": "active",
+ "category": 11
+ },
+ "https://github.com/jelastic-jps/minio": {
+ "url": "https://github.com/jelastic-jps/minio",
+ "status": "active",
+ "category": 11
+ },
+ "https://github.com/ContainX/docker-volume-netshare": {
+ "url": "https://github.com/ContainX/docker-volume-netshare",
+ "status": "active",
+ "category": 11
+ },
+ "https://github.com/rexray/rexray": {
+ "url": "https://github.com/rexray/rexray",
+ "status": "active",
+ "category": 11
+ },
+ "https://github.com/dockeron/dockeron": {
+ "url": "https://github.com/dockeron/dockeron",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/DockStation/dockstation": {
+ "url": "https://github.com/DockStation/dockstation",
+ "status": "active",
+ "category": 12
+ },
+ "https://github.com/jplhomer/lifeboat": {
+ "url": "https://github.com/jplhomer/lifeboat",
+ "status": "active",
+ "category": 12
+ },
+ "https://github.com/jenssegers/captain": {
+ "url": "https://github.com/jenssegers/captain",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/yadutaf/ctop": {
+ "url": "https://github.com/yadutaf/ctop",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/bcicen/ctop": {
+ "url": "https://github.com/bcicen/ctop",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/vutran/dext-docker-registry-plugin": {
+ "url": "https://github.com/vutran/dext-docker-registry-plugin",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/mayflower/docker-ls": {
+ "url": "https://github.com/mayflower/docker-ls",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/icecrime/docker-mon": {
+ "url": "https://github.com/icecrime/docker-mon",
+ "status": "archived",
+ "category": 13
+ },
+ "https://github.com/Silex/docker.el": {
+ "url": "https://github.com/Silex/docker.el",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/docker/dockercraft": {
+ "url": "https://github.com/docker/dockercraft",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/spotify/dockerfile-mode": {
+ "url": "https://github.com/spotify/dockerfile-mode",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/crosbymichael/dockersql": {
+ "url": "https://github.com/crosbymichael/dockersql",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/lirantal/dockly": {
+ "url": "https://github.com/lirantal/dockly",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/moncho/dry": {
+ "url": "https://github.com/moncho/dry",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/howtowhale/dvm": {
+ "url": "https://github.com/howtowhale/dvm",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/marty90/multidocker": {
+ "url": "https://github.com/marty90/multidocker",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/jpetazzo/nsenter": {
+ "url": "https://github.com/jpetazzo/nsenter",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/adrianmo/powerline-docker": {
+ "url": "https://github.com/adrianmo/powerline-docker",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/shiwaforce/proco": {
+ "url": "https://github.com/shiwaforce/proco",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/genuinetools/reg": {
+ "url": "https://github.com/genuinetools/reg",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/JonathonReinhart/scuba": {
+ "url": "https://github.com/JonathonReinhart/scuba",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/TomasTomecek/sen": {
+ "url": "https://github.com/TomasTomecek/sen",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/segersniels/supdock": {
+ "url": "https://github.com/segersniels/supdock",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/qazbnm456/tsaotun": {
+ "url": "https://github.com/qazbnm456/tsaotun",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/j-bennet/wharfee": {
+ "url": "https://github.com/j-bennet/wharfee",
+ "status": "active",
+ "category": 13
+ },
+ "https://github.com/klausmeyer/docker-registry-browser": {
+ "url": "https://github.com/klausmeyer/docker-registry-browser",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/squidnyan/docker-registry-ui": {
+ "url": "https://github.com/squidnyan/docker-registry-ui",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/mkuchin/docker-registry-web": {
+ "url": "https://github.com/mkuchin/docker-registry-web",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/dockersamples/docker-swarm-visualizer": {
+ "url": "https://github.com/dockersamples/docker-swarm-visualizer",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/Electrofenster/dockerding-on-rails": {
+ "url": "https://github.com/Electrofenster/dockerding-on-rails",
+ "status": "archived",
+ "category": 14
+ },
+ "https://github.com/Simone-Erba/DockerSurfer": {
+ "url": "https://github.com/Simone-Erba/DockerSurfer",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/TheNexCloud/NexClipper": {
+ "url": "https://github.com/TheNexCloud/NexClipper",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/OctoLinker/OctoLinker": {
+ "url": "https://github.com/OctoLinker/OctoLinker",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/portainer/portainer": {
+ "url": "https://github.com/portainer/portainer",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/SUSE/Portus": {
+ "url": "https://github.com/SUSE/Portus",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/ozlerhakan/rapid": {
+ "url": "https://github.com/ozlerhakan/rapid",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/tobegit3hub/seagull": {
+ "url": "https://github.com/tobegit3hub/seagull",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/cuigh/swirl": {
+ "url": "https://github.com/cuigh/swirl",
+ "status": "active",
+ "category": 14
+ },
+ "https://github.com/genuinetools/amicontained": {
+ "url": "https://github.com/genuinetools/amicontained",
+ "status": "active",
+ "category": 15
+ },
+ "https://github.com/prologic/autodock": {
+ "url": "https://github.com/prologic/autodock",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/garywiz/chaperone": {
+ "url": "https://github.com/garywiz/chaperone",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/jwilder/docker-gen": {
+ "url": "https://github.com/jwilder/docker-gen",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/jwilder/dockerize": {
+ "url": "https://github.com/jwilder/dockerize",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/tianon/gosu": {
+ "url": "https://github.com/tianon/gosu",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/sindresorhus/is-docker": {
+ "url": "https://github.com/sindresorhus/is-docker",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/ivanilves/lstags": {
+ "url": "https://github.com/ivanilves/lstags",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/NVIDIA/nvidia-docker": {
+ "url": "https://github.com/NVIDIA/nvidia-docker",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/ncopa/su-exec": {
+ "url": "https://github.com/ncopa/su-exec",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/aptible/supercronic": {
+ "url": "https://github.com/aptible/supercronic",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/vorakl/TrivialRC": {
+ "url": "https://github.com/vorakl/TrivialRC",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/projectatomic/buildah": {
+ "url": "https://github.com/projectatomic/buildah",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/GoogleContainerTools/container-diff": {
+ "url": "https://github.com/GoogleContainerTools/container-diff",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/mutable/container-factory": {
+ "url": "https://github.com/mutable/container-factory",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/mdlavin/copy-docker-image": {
+ "url": "https://github.com/mdlavin/copy-docker-image",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/alibaba/derrick": {
+ "url": "https://github.com/alibaba/derrick",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/wercker/dlayer": {
+ "url": "https://github.com/wercker/dlayer",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/mudler/docker-companion": {
+ "url": "https://github.com/mudler/docker-companion",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/CtripCloud/docker-make": {
+ "url": "https://github.com/CtripCloud/docker-make",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/bcicen/docker-replay": {
+ "url": "https://github.com/bcicen/docker-replay",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/docker-slim/docker-slim": {
+ "url": "https://github.com/docker-slim/docker-slim",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/swipely/dockly": {
+ "url": "https://github.com/swipely/dockly",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/jlhawn/dockramp": {
+ "url": "https://github.com/jlhawn/dockramp",
+ "status": "archived",
+ "category": 17
+ },
+ "https://github.com/genuinetools/img": {
+ "url": "https://github.com/genuinetools/img",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/GoogleContainerTools/kaniko": {
+ "url": "https://github.com/GoogleContainerTools/kaniko",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/duedil-ltd/portainer": {
+ "url": "https://github.com/duedil-ltd/portainer",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/lavie/runlike": {
+ "url": "https://github.com/lavie/runlike",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/djosephsen/skinnywhale": {
+ "url": "https://github.com/djosephsen/skinnywhale",
+ "status": "archived",
+ "category": 17
+ },
+ "https://github.com/P3GLEG/Whaler": {
+ "url": "https://github.com/P3GLEG/Whaler",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/Gueils/whales": {
+ "url": "https://github.com/Gueils/whales",
+ "status": "active",
+ "category": 17
+ },
+ "https://github.com/garywiz/chaperone-docker": {
+ "url": "https://github.com/garywiz/chaperone-docker",
+ "status": "active",
+ "category": 18
+ },
+ "https://github.com/arun-gupta/docker-images": {
+ "url": "https://github.com/arun-gupta/docker-images",
+ "status": "active",
+ "category": 18
+ },
+ "https://github.com/awesome-startup/docker-compose": {
+ "url": "https://github.com/awesome-startup/docker-compose",
+ "status": "active",
+ "category": 18
+ },
+ "https://github.com/crosbymichael/Dockerfiles": {
+ "url": "https://github.com/crosbymichael/Dockerfiles",
+ "status": "active",
+ "category": 18
+ },
+ "https://github.com/jessfraz/Dockerfiles": {
+ "url": "https://github.com/jessfraz/Dockerfiles",
+ "status": "active",
+ "category": 18
+ },
+ "https://github.com/komljen/dockerfile-examples": {
+ "url": "https://github.com/komljen/dockerfile-examples",
+ "status": "active",
+ "category": 18
+ },
+ "https://github.com/kstaken/dockerfile-examples": {
+ "url": "https://github.com/kstaken/dockerfile-examples",
+ "status": "active",
+ "category": 18
+ },
+ "https://github.com/ondrejmo/Dockerfiles": {
+ "url": "https://github.com/ondrejmo/Dockerfiles",
+ "status": "active",
+ "category": 18
+ },
+ "https://github.com/vimagick/dockerfiles": {
+ "url": "https://github.com/vimagick/dockerfiles",
+ "status": "active",
+ "category": 18
+ },
+ "https://github.com/projectatomic/dockerfile_lint": {
+ "url": "https://github.com/projectatomic/dockerfile_lint",
+ "status": "active",
+ "category": 19
+ },
+ "https://github.com/replicatedhq/dockerfilelint": {
+ "url": "https://github.com/replicatedhq/dockerfilelint",
+ "status": "active",
+ "category": 19
+ },
+ "https://github.com/jessfraz/dockfmt": {
+ "url": "https://github.com/jessfraz/dockfmt",
+ "status": "active",
+ "category": 19
+ },
+ "https://github.com/hadolint/hadolint": {
+ "url": "https://github.com/hadolint/hadolint",
+ "status": "active",
+ "category": 19
+ },
+ "https://github.com/jeromepin/whale-linter": {
+ "url": "https://github.com/jeromepin/whale-linter",
+ "status": "active",
+ "category": 19
+ },
+ "https://github.com/opencontainers/image-spec": {
+ "url": "https://github.com/opencontainers/image-spec",
+ "status": "active",
+ "category": 20
+ },
+ "https://github.com/RedCoolBeans/cargos-buildroot": {
+ "url": "https://github.com/RedCoolBeans/cargos-buildroot",
+ "status": "active",
+ "category": 21
+ },
+ "https://github.com/hcguersoy/cleanreg": {
+ "url": "https://github.com/hcguersoy/cleanreg",
+ "status": "active",
+ "category": 21
+ },
+ "https://github.com/netvarun/docket": {
+ "url": "https://github.com/netvarun/docket",
+ "status": "active",
+ "category": 21
+ },
+ "https://github.com/puppetlabs/europa": {
+ "url": "https://github.com/puppetlabs/europa",
+ "status": "active",
+ "category": 21
+ },
+ "https://github.com/noteed/rescoyl": {
+ "url": "https://github.com/noteed/rescoyl",
+ "status": "active",
+ "category": 21
+ },
+ "https://github.com/instacart/ahab": {
+ "url": "https://github.com/instacart/ahab",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/gesellix/docker-client": {
+ "url": "https://github.com/gesellix/docker-client",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/whisklabs/docker-it-scala": {
+ "url": "https://github.com/whisklabs/docker-it-scala",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/fabric8io/docker-maven-plugin": {
+ "url": "https://github.com/fabric8io/docker-maven-plugin",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/Microsoft/Docker-PowerShell": {
+ "url": "https://github.com/Microsoft/Docker-PowerShell",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/Microsoft/Docker.DotNet": {
+ "url": "https://github.com/Microsoft/Docker.DotNet",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/spotify/dockerfile-maven": {
+ "url": "https://github.com/spotify/dockerfile-maven",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/apocas/dockerode": {
+ "url": "https://github.com/apocas/dockerode",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/eon01/DoMonit": {
+ "url": "https://github.com/eon01/DoMonit",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/fsouza/go-dockerclient": {
+ "url": "https://github.com/fsouza/go-dockerclient",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/gesellix/gradle-docker-plugin": {
+ "url": "https://github.com/gesellix/gradle-docker-plugin",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/docker/libcompose": {
+ "url": "https://github.com/docker/libcompose",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/Tapad/sbt-docker-compose": {
+ "url": "https://github.com/Tapad/sbt-docker-compose",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/marcuslonnberg/sbt-docker": {
+ "url": "https://github.com/marcuslonnberg/sbt-docker",
+ "status": "active",
+ "category": 23
+ },
+ "https://github.com/harbur/captain": {
+ "url": "https://github.com/harbur/captain",
+ "status": "active",
+ "category": 24
+ },
+ "https://github.com/caicloud/cyclone": {
+ "url": "https://github.com/caicloud/cyclone",
+ "status": "active",
+ "category": 24
+ },
+ "https://github.com/jenkinsci/docker-plugin": {
+ "url": "https://github.com/jenkinsci/docker-plugin",
+ "status": "active",
+ "category": 24
+ },
+ "https://github.com/drone/drone": {
+ "url": "https://github.com/drone/drone",
+ "status": "active",
+ "category": 24
+ },
+ "https://github.com/gocd/gocd-docker": {
+ "url": "https://github.com/gocd/gocd-docker",
+ "status": "active",
+ "category": 24
+ },
+ "https://github.com/francescou/docker-continuous-deployment": {
+ "url": "https://github.com/francescou/docker-continuous-deployment",
+ "status": "active",
+ "category": 24
+ },
+ "https://github.com/stelligent/mu": {
+ "url": "https://github.com/stelligent/mu",
+ "status": "active",
+ "category": 24
+ },
+ "https://github.com/Stratoscale/skipper": {
+ "url": "https://github.com/Stratoscale/skipper",
+ "status": "active",
+ "category": 24
+ },
+ "https://github.com/ghostsquad/swarmci": {
+ "url": "https://github.com/ghostsquad/swarmci",
+ "status": "active",
+ "category": 24
+ },
+ "https://github.com/v2tec/watchtower": {
+ "url": "https://github.com/v2tec/watchtower",
+ "status": "active",
+ "category": 24
+ },
+ "https://github.com/binci/binci": {
+ "url": "https://github.com/binci/binci",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/boot2docker/boot2docker": {
+ "url": "https://github.com/boot2docker/boot2docker",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/lstephen/construi": {
+ "url": "https://github.com/lstephen/construi",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/fgrehm/devstep": {
+ "url": "https://github.com/fgrehm/devstep",
+ "status": "archived",
+ "category": 25
+ },
+ "https://github.com/codekitchen/dinghy": {
+ "url": "https://github.com/codekitchen/dinghy",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/nlf/dlite": {
+ "url": "https://github.com/nlf/dlite",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/dnephin/dobi": {
+ "url": "https://github.com/dnephin/dobi",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/nandoquintana/docker-missing-tools": {
+ "url": "https://github.com/nandoquintana/docker-missing-tools",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/brikis98/docker-osx-dev": {
+ "url": "https://github.com/brikis98/docker-osx-dev",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/Ph3nol/Docker-Arch": {
+ "url": "https://github.com/Ph3nol/Docker-Arch",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/EugenMayer/docker-sync": {
+ "url": "https://github.com/EugenMayer/docker-sync",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/shyiko/docker-vm": {
+ "url": "https://github.com/shyiko/docker-vm",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/PhilippHeuer/EnvCLI": {
+ "url": "https://github.com/PhilippHeuer/EnvCLI",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/bsideup/forward2docker": {
+ "url": "https://github.com/bsideup/forward2docker",
+ "status": "archived",
+ "category": 25
+ },
+ "https://github.com/lando/lando": {
+ "url": "https://github.com/lando/lando",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/tailhook/vagga": {
+ "url": "https://github.com/tailhook/vagga",
+ "status": "active",
+ "category": 25
+ },
+ "https://github.com/tjamet/caduc": {
+ "url": "https://github.com/tjamet/caduc",
+ "status": "active",
+ "category": 26
+ },
+ "https://github.com/zzrotdesign/docker-clean": {
+ "url": "https://github.com/zzrotdesign/docker-clean",
+ "status": "active",
+ "category": 26
+ },
+ "https://github.com/meltwater/docker-cleanup": {
+ "url": "https://github.com/meltwater/docker-cleanup",
+ "status": "active",
+ "category": 26
+ },
+ "https://github.com/Yelp/docker-custodian": {
+ "url": "https://github.com/Yelp/docker-custodian",
+ "status": "active",
+ "category": 26
+ },
+ "https://github.com/konstruktoid/docker-garby": {
+ "url": "https://github.com/konstruktoid/docker-garby",
+ "status": "active",
+ "category": 26
+ },
+ "https://github.com/spotify/docker-gc": {
+ "url": "https://github.com/spotify/docker-gc",
+ "status": "active",
+ "category": 26
+ },
+ "https://github.com/rancher/sherdock": {
+ "url": "https://github.com/rancher/sherdock",
+ "status": "archived",
+ "category": 26
+ },
+ "https://github.com/appcelerator/amp": {
+ "url": "https://github.com/appcelerator/amp",
+ "status": "active",
+ "category": 27
+ },
+ "https://github.com/apache/incubator-openwhisk": {
+ "url": "https://github.com/apache/incubator-openwhisk",
+ "status": "active",
+ "category": 27
+ },
+ "https://github.com/lambci/docker-lambda": {
+ "url": "https://github.com/lambci/docker-lambda",
+ "status": "active",
+ "category": 27
+ },
+ "https://github.com/bfirsh/funker-example-voting-app": {
+ "url": "https://github.com/bfirsh/funker-example-voting-app",
+ "status": "active",
+ "category": 27
+ },
+ "https://github.com/iron-io/functions": {
+ "url": "https://github.com/iron-io/functions",
+ "status": "active",
+ "category": 27
+ },
+ "https://github.com/openfaas/faas": {
+ "url": "https://github.com/openfaas/faas",
+ "status": "active",
+ "category": 27
+ },
+ "https://github.com/grycap/scar": {
+ "url": "https://github.com/grycap/scar",
+ "status": "active",
+ "category": 27
+ },
+ "https://github.com/GoogleContainerTools/container-structure-test": {
+ "url": "https://github.com/GoogleContainerTools/container-structure-test",
+ "status": "active",
+ "category": 28
+ },
+ "https://github.com/aelsabbahy/goss": {
+ "url": "https://github.com/aelsabbahy/goss",
+ "status": "active",
+ "category": 28
+ },
+ "https://github.com/zuazo/dockerspec": {
+ "url": "https://github.com/zuazo/dockerspec",
+ "status": "active",
+ "category": 28
+ },
+ "https://github.com/dockunit/platform": {
+ "url": "https://github.com/dockunit/platform",
+ "status": "archived",
+ "category": 28
+ },
+ "https://github.com/alexei-led/pumba": {
+ "url": "https://github.com/alexei-led/pumba",
+ "status": "active",
+ "category": 28
+ },
+ "https://github.com/azukiapp/azk": {
+ "url": "https://github.com/azukiapp/azk",
+ "status": "active",
+ "category": 29
+ },
+ "https://github.com/cortexmedia/Beluga": {
+ "url": "https://github.com/cortexmedia/Beluga",
+ "status": "archived",
+ "category": 29
+ },
+ "https://github.com/docker-exec/dexec": {
+ "url": "https://github.com/docker-exec/dexec",
+ "status": "active",
+ "category": 29
+ },
+ "https://github.com/benzaita/docker-do": {
+ "url": "https://github.com/benzaita/docker-do",
+ "status": "active",
+ "category": 29
+ },
+ "https://github.com/CenturyLinkLabs/dray": {
+ "url": "https://github.com/CenturyLinkLabs/dray",
+ "status": "active",
+ "category": 29
+ },
+ "https://github.com/mattes/fugu": {
+ "url": "https://github.com/mattes/fugu",
+ "status": "active",
+ "category": 29
+ },
+ "https://github.com/subuser-security/subuser": {
+ "url": "https://github.com/subuser-security/subuser",
+ "status": "active",
+ "category": 29
+ },
+ "https://github.com/ramitsurana/turbo": {
+ "url": "https://github.com/ramitsurana/turbo",
+ "status": "active",
+ "category": 29
+ },
+ "https://github.com/indigo-dc/udocker": {
+ "url": "https://github.com/indigo-dc/udocker",
+ "status": "active",
+ "category": 29
+ },
+ "https://github.com/bubenkoff/vagrant-docker-example": {
+ "url": "https://github.com/bubenkoff/vagrant-docker-example",
+ "status": "active",
+ "category": 29
+ },
+ "https://github.com/cncf/landscape": {
+ "url": "https://github.com/cncf/landscape",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/ciandcd/awesome-ciandcd": {
+ "url": "https://github.com/ciandcd/awesome-ciandcd",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/ramitsurana/awesome-kubernetes": {
+ "url": "https://github.com/ramitsurana/awesome-kubernetes",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/Friz-zy/awesome-linux-containers": {
+ "url": "https://github.com/Friz-zy/awesome-linux-containers",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/Kickball/awesome-selfhosted": {
+ "url": "https://github.com/Kickball/awesome-selfhosted",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/n1trux/awesome-sysadmin": {
+ "url": "https://github.com/n1trux/awesome-sysadmin",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/cjbarber/ToolsOfTheTrade": {
+ "url": "https://github.com/cjbarber/ToolsOfTheTrade",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/umiddelb/armhf": {
+ "url": "https://github.com/umiddelb/armhf",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/tomwillfixit/alpine-cvecheck": {
+ "url": "https://github.com/tomwillfixit/alpine-cvecheck",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/GDSSecurity/Docker-Secure-Deployment-Guidelines": {
+ "url": "https://github.com/GDSSecurity/Docker-Secure-Deployment-Guidelines",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/konstruktoid/Docker": {
+ "url": "https://github.com/konstruktoid/Docker",
+ "status": "active",
+ "category": 9
+ },
+ "https://github.com/docker-library/official-images": {
+ "url": "https://github.com/docker-library/official-images",
+ "status": "active",
+ "category": 15
+ },
+ "https://github.com/gliderlabs/docker-alpine": {
+ "url": "https://github.com/gliderlabs/docker-alpine",
+ "status": "active",
+ "category": 16
+ },
+ "https://github.com/projectcalico/calicoctl": {
+ "url": "https://github.com/projectcalico/calicoctl",
+ "status": "active",
+ "category": 5
+ },
+ "https://github.com/docker/distribution": {
+ "url": "https://github.com/docker/distribution",
+ "status": "active",
+ "category": 21
+ },
+ "https://github.com/wsargent/docker-cheat-sheet": {
+ "url": "https://github.com/wsargent/docker-cheat-sheet",
+ "status": "active",
+ "category": 30
+ },
+ "https://github.com/dimonomid/docker-quick-ref": {
+ "url": "https://github.com/dimonomid/docker-quick-ref",
+ "status": "active",
+ "category": 30
+ },
+ "https://github.com/dokku/dokku": {
+ "url": "https://github.com/dokku/dokku",
+ "status": "active",
+ "category": 7
+ },
+ "https://github.com/kiyoto/docker-fluentd": {
+ "url": "https://github.com/kiyoto/docker-fluentd",
+ "status": "active",
+ "category": 0
+ },
+ "https://github.com/inspec/inspec": {
+ "url": "https://github.com/inspec/inspec",
+ "status": "active",
+ "category": 28
+ },
+ "https://github.com/jessfraz/dockerfiles": {
+ "url": "https://github.com/jessfraz/dockerfiles",
+ "status": "active",
+ "category": 18
+ },
+ "https://github.com/jwilder/nginx-proxy": {
+ "url": "https://github.com/jwilder/nginx-proxy",
+ "status": "active",
+ "category": 8
+ },
+ "https://github.com/ashmckenzie/percheron": {
+ "url": "https://github.com/ashmckenzie/percheron",
+ "status": "archived",
+ "category": 2
+ },
+ "https://github.com/sematext/sematext-agent-docker": {
+ "url": "https://github.com/sematext/sematext-agent-docker",
+ "status": "active",
+ "category": 4
+ },
+ "https://github.com/weaveworks/weave": {
+ "url": "https://github.com/weaveworks/weave",
+ "status": "active",
+ "category": 5
+ }
+}
\ No newline at end of file
diff --git a/data/list_repos.json b/data/repository.json
similarity index 99%
rename from data/list_repos.json
rename to data/repository.json
index a890839..009a307 100644
--- a/data/list_repos.json
+++ b/data/repository.json
@@ -34,7 +34,7 @@
"https://github.com/ttiny/deploy",
"https://github.com/humblec/dockit",
"https://github.com/hasura/gitkube",
- "https://github.com/Grafeas/Grafeas",
+ "https://github.com/grafeas/grafeas",
"https://github.com/longshoreman/longshoreman",
"https://github.com/axibase/atsd-use-cases",
"https://github.com/google/cadvisor",
@@ -240,7 +240,7 @@
"https://github.com/dnephin/dobi",
"https://github.com/nandoquintana/docker-missing-tools",
"https://github.com/brikis98/docker-osx-dev",
- "https://github.com/ph3nol/docker-arch",
+ "https://github.com/Ph3nol/Docker-Arch",
"https://github.com/EugenMayer/docker-sync",
"https://github.com/shyiko/docker-vm",
"https://github.com/PhilippHeuer/EnvCLI",
@@ -297,7 +297,6 @@
"https://github.com/kiyoto/docker-fluentd",
"https://github.com/inspec/inspec",
"https://github.com/jessfraz/dockerfiles",
- "https://github.com/jessfraz/dotfiles",
"https://github.com/jwilder/nginx-proxy",
"https://github.com/ashmckenzie/percheron",
"https://github.com/sematext/sematext-agent-docker",
diff --git a/website/index.js b/website/index.js
index 443a53e..7614828 100644
--- a/website/index.js
+++ b/website/index.js
@@ -6,7 +6,7 @@ const main = () => {
'name',
'description',
'homepage',
- 'star',
+ { name: 'star', attr: 'data-stars' },
{ name: 'updated', attr: 'data-timestamp' },
'language',
'license',
diff --git a/website/table.tmpl.html b/website/table.tmpl.html
index 7d61b21..984055a 100644
--- a/website/table.tmpl.html
+++ b/website/table.tmpl.html
@@ -13,7 +13,7 @@