Add Tools page, remove tools from Misc

This commit is contained in:
lostinlight 2020-04-25 01:20:08 +03:00
parent badf76840e
commit 6b92afc826
9 changed files with 684 additions and 554 deletions

View file

@ -27,9 +27,10 @@ Please, choose no more than **2 categories** (array of strings) for the software
* `Links` (link sharing) * `Links` (link sharing)
* `Ev-Meet` (events, meetups, calendars) * `Ev-Meet` (events, meetups, calendars)
* `Files` (file hosting software) * `Files` (file hosting software)
* `Coop` (cooperatives, shared management)
* `Econ` (economic activities) * `Econ` (economic activities)
* `DataForge` (dataset / corpora exchange) * `DataForge` (dataset / corpora exchange)
* `Reviews` (networks whose main purpose is reviewing stuff)
* `Games` (gaming servers and apps)
A project may have a logo / image (45x45px), placed in `./source/img/misc` folder. A project may have a logo / image (45x45px), placed in `./source/img/misc` folder.
@ -37,10 +38,15 @@ A project may have a logo / image (45x45px), placed in `./source/img/misc` folde
Fork this repository. Add your project data to `./source/_data/tools.json` file. Fork this repository. Add your project data to `./source/_data/tools.json` file.
#### Tools categories (WIP, may change in the future) #### Tools categories (WIP, may change in the future)
* `DevTools` (developer tools: libraries and such) * `Libs` (frameworks, libraries, reference implementations in particular code language)
* `Plugins` (plugins) * `Specs` (Fediverse protocol specifications)
* `Tools` (for developer and geeky tools, like pastebins, git systems, pads, etc)
* `Utils` (daemons, bots, resharers, and other such services for Fediverse)
* `Relays` (Fediverse relays) * `Relays` (Fediverse relays)
* `DataForge` (dataset / corpora exchange) * `Bridges` (bridging other stuff to fediverse networks)
* `Tests` (any kind of test tools)
* `Plugins` (CMS plugins, apps to be installed inside other systems connecting to Fediverse)
* `Other` (everything that doesn't quite fit into the above categories)
### [Submitting news](#submitting-news) ### [Submitting news](#submitting-news)

View file

@ -37,24 +37,6 @@
"OStatusClass": false, "OStatusClass": false,
"categories": ["Blog-Pub"] "categories": ["Blog-Pub"]
}, },
{
"title": "Guppe",
"source": "https://github.com/wmurphyrd/guppe",
"protocols": "ActivityPub",
"site": "https://gup.pe",
"logo": "/img/misc/guppe.png",
"servers": "",
"description": "Social groups for Mastodon and other ActivityPub networks.",
"codeLanguage": "Javascript",
"techStack": "Node.js, Express, Vue",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["SN-ma"]
},
{ {
"title": "dolphin", "title": "dolphin",
"source": "https://github.com/syuilo/dolphin", "source": "https://github.com/syuilo/dolphin",
@ -233,25 +215,7 @@
"zotClass": false, "zotClass": false,
"diasporaClass": false, "diasporaClass": false,
"OStatusClass": false, "OStatusClass": false,
"categories": ["Coop"] "categories": ["SN-mi", "SN-ma"]
},
{
"title": "Nextcloud-Social",
"source": "https://github.com/nextcloud/social",
"protocols": "ActivityPub",
"site": "https://apps.nextcloud.com/apps/social",
"logo": "/img/misc/nextcloud.png",
"servers": "",
"description": "Social networking app for NextCloud users.",
"codeLanguage": "PHP",
"techStack": "Node.js, Vue, SCSS",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Files"]
}, },
{ {
"title": "Lemmy", "title": "Lemmy",
@ -539,7 +503,7 @@
"zotClass": false, "zotClass": false,
"diasporaClass": false, "diasporaClass": false,
"OStatusClass": false, "OStatusClass": false,
"categories": ["DevTools", "SN-mi"] "categories": ["SN-mi"]
}, },
{ {
"title": "MoonTree", "title": "MoonTree",
@ -665,7 +629,7 @@
"zotClass": false, "zotClass": false,
"diasporaClass": false, "diasporaClass": false,
"OStatusClass": false, "OStatusClass": false,
"categories": ["Blog-Pub"] "categories": ["Reviews"]
}, },
{ {
"title": "SkoHub", "title": "SkoHub",
@ -737,493 +701,7 @@
"zotClass": false, "zotClass": false,
"diasporaClass": false, "diasporaClass": false,
"OStatusClass": false, "OStatusClass": false,
"categories": ["SN-mi"] "categories": ["Games"]
},
{
"title": "Vervis",
"source": "https://dev.angeley.es/s/fr33domlover/r/vervis/s",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A project hosting and management application. Reference implementation of ForgeFed.",
"codeLanguage": "Haskell",
"techStack": "",
"license": "AGPL-3.0 / CC0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "ForgeFed",
"source": "https://notabug.org/peers/forgefed",
"protocols": "ActivityPub",
"site": "https://forgefed.peers.community",
"logo": "/img/misc/forgefed.svg",
"servers": "",
"description": "Upcoming federation protocol for enabling interoperability between version control services.",
"codeLanguage": "",
"techStack": "",
"license": "CC-1.0",
"FediAccount": "https://floss.social/@forgefed",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "Nautilus",
"source": "https://github.com/aaronpk/Nautilus",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A standalone service to deliver posts from your own website to ActivityPub followers.",
"codeLanguage": "PHP",
"techStack": "Laravel, Vue",
"license": "Apache-2.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "Pherephone",
"source": "https://github.com/writeas/pherephone",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "An ActivityPub server that reblogs all the statuses of certain actors. You set it up to follow a few accounts and it Announces everything they post.",
"codeLanguage": "Go",
"techStack": "",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "Go-Fed Activity",
"source": "https://github.com/go-fed/activity",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "ActivityStreams & ActivityPub in golang.",
"codeLanguage": "Go",
"techStack": "",
"license": "BSD-3-clause",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "BridgyFed",
"source": "https://github.com/snarfed/bridgy-fed",
"protocols": "ActivityPub, OStatus",
"site": "https://fed.brid.gy",
"description": "Bridges the IndieWeb to federated social networks: ActivityPub, OStatus, etc.",
"codeLanguage": "Python",
"techStack": "",
"license": "CC-0",
"FediAccount": "",
"logo": "",
"servers": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": true,
"categories": ["DevTools"]
},
{
"title": "Federation",
"source": "https://git.feneas.org/jaywink/federation",
"protocols": "ActivityPub, diaspora",
"site": "https://federation.readthedocs.io",
"logo": "",
"servers": "",
"description": "Python library to abstract social web federation protocols like ActivityPub and diaspora.",
"codeLanguage": "Python",
"techStack": "Django",
"license": "BSD-3-clause",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": true,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "Little Boxes",
"source": "https://github.com/tsileo/little-boxes",
"protocols": "ActivityPub",
"site": "https://little-boxes.readthedocs.io",
"logo": "",
"servers": "",
"description": "Tiny ActivityPub framework written in Python, both database and server agnostic.",
"codeLanguage": "Python",
"techStack": "",
"license": "ISC",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "Python ActivityPub",
"source": "https://github.com/dsblank/activitypub",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A general Python ActivityPub library.",
"codeLanguage": "Python",
"techStack": "",
"license": "MPL-2.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "ActivityPub PHP",
"source": "https://github.com/pterotype-project/activitypub-php",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A PHP implementation of the ActivityPub protocol.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "https://mastodon.technology/@jdormit",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "Express ActivityPub",
"source": "https://github.com/dariusk/express-activitypub",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A simple reference implementation of an ActivityPub server using Express.js.",
"codeLanguage": "Javascript",
"techStack": "Express",
"license": "MIT",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "ActivityPub Express",
"source": "https://github.com/wmurphyrd/activitypub-express",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "Modular ActivityPub implementation as Express.js middleware to easily add decentralization and federation to Node apps.",
"codeLanguage": "Javascript",
"techStack": "Express",
"license": "-",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "distbin",
"source": "https://github.com/gobengo/distbin",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "https://distbin.com",
"description": "Post bin with distributed social features.",
"codeLanguage": "Typescript",
"techStack": "",
"license": "Apache-2.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "WordPress-ActivityPub",
"source": "https://github.com/pfefferle/wordpress-activitypub",
"protocols": "ActivityPub",
"site": "https://wordpress.org/plugins/activitypub",
"logo": "",
"servers": "",
"description": "ActivityPub for WordPress.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Plugins"]
},
{
"title": "WordPress-OStatus",
"source": "https://github.com/pfefferle/wordpress-ostatus",
"protocols": "OStatus",
"site": "https://wordpress.org/plugins/ostatus-for-wordpress",
"logo": "",
"servers": "",
"description": "An OStatus plugin for WordPress.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "",
"apClass": false,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": true,
"categories": ["Plugins"]
},
{
"title": "LitePub",
"source": "https://github.com/litepub/litepub",
"protocols": "ActivityPub",
"site": "https://litepub.social/litepub",
"logo": "",
"servers": "",
"description": "Litepub protocol specification.",
"codeLanguage": "",
"techStack": "",
"license": "-",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "p3k",
"source": "https://github.com/aaronpk/p3k",
"protocols": "ActivityPub",
"site": "https://indieweb.org/p3k",
"logo": "",
"servers": "https://the-federation.info/p3k",
"description": "Components of the sites aaronparecki.com and indiewebcat.com.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "Activity relay",
"source": "https://git.pleroma.social/pleroma/relay",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "https://fediverse.network/activityrelay",
"description": "Generic LitePub relay, works with all LitePub consumers and with Mastodon.",
"codeLanguage": "Python",
"techStack": "",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Relays"]
},
{
"title": "Pub relay",
"source": "https://source.joinmastodon.org/mastodon/pub-relay",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A service-type ActivityPub actor that will re-broadcast anything sent to it to anyone who subscribes to it.",
"codeLanguage": "Crystal",
"techStack": "",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Relays"]
},
{
"title": "Social relay",
"source": "https://github.com/jaywink/social-relay",
"protocols": "diaspora",
"site": "",
"logo": "",
"servers": "https://the-federation.info/social-relay",
"description": "Public post relay for the diaspora* federated social network protocol.",
"codeLanguage": "Python",
"techStack": "",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": false,
"zotClass": false,
"diasporaClass": true,
"OStatusClass": false,
"categories": ["Relays"]
},
{
"title": "Seattle relay",
"source": "https://gitlab.com/jankysolutions/social.seattle.wa.us/relay",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "https://fediverse.network/social.seattle.wa.us-relay",
"description": "Something like the Pleroma relay but with crazy things like workers.",
"codeLanguage": "Python",
"techStack": "",
"license": "-",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Relays"]
},
{
"title": "Pterotype",
"source": "https://github.com/pterotype-project/pterotype",
"protocols": "ActivityPub",
"site": "",
"logo": "/img/misc/pterotype.png",
"servers": "",
"description": "WordPress plugin. Pterotype connects your blog to the Fediverse by giving it an ActivityPub feed.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "https://mastodon.technology/@jdormit",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Plugins"]
},
{
"title": "feed2toot",
"source": "https://gitlab.com/chaica/feed2toot",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "Feed2toot automatically parses RSS feeds, identifies new posts and posts them on the Mastodon social network.",
"codeLanguage": "Python",
"techStack": "",
"license": "MIT",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "RSS-to-ActivityPub",
"source": "https://github.com/dariusk/rss-to-activitypub",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "RSS to ActivityPub converter.",
"codeLanguage": "Javascript",
"techStack": "Node.js",
"license": "MIT",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "Activity-PHP",
"source": "https://github.com/landrok/activitypub",
"protocols": "ActivityPub",
"site": "https://landrok.github.io/activitypub",
"logo": "",
"servers": "",
"description": "PHP implementation of ActivityPub protocol based on the ActivityStreams 2.0 data format.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "https://cybre.space/@landrok",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "Astreams",
"source": "https://github.com/MatejLach/astreams",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A hand-crafted implementation of the Activity Streams 2.0 specification in Go.",
"codeLanguage": "Go",
"techStack": "",
"license": "AGPL-3.0",
"FediAccount": "https://social.matej-lach.me/@MatejLach",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
},
{
"title": "ActivityPub-mock",
"source": "https://gitlab.com/evanp/activitypub-mock",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A mock ActivityPub server to use in testing code.",
"codeLanguage": "Javascript",
"techStack": "",
"license": "Apache-2.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["DevTools"]
}, },
{ {
"title": "diaspora*", "title": "diaspora*",

View file

@ -6,7 +6,7 @@
"type": "microblogging", "type": "microblogging",
"logoClr": "fb4e4e", "logoClr": "fb4e4e",
"created": "2014", "created": "2014",
"official": "https://joinmisskey.github.io", "official": "https://join.misskey.page/en",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"repo": "https://github.com/syuilo/misskey", "repo": "https://github.com/syuilo/misskey",
"language": "(Node)JS", "language": "(Node)JS",
@ -17,10 +17,10 @@
"wiki": "", "wiki": "",
"servers": "servers":
[ [
{"num": "1", "url": "https://joinmisskey.github.io/en/wiki/instances"}, {"num": "1", "url": "https://join.misskey.page/en/wiki/instances"},
{"num": "2", "url": "https://fediverse.network/misskey"} {"num": "2", "url": "https://fediverse.network/misskey"}
], ],
"mobile": "https://joinmisskey.github.io/en/wiki/apps", "mobile": "https://join.misskey.page/en/wiki/apps/clients",
"devTutorial": "https://github.com/syuilo/misskey/blob/master/docs/setup.en.md", "devTutorial": "https://github.com/syuilo/misskey/blob/master/docs/setup.en.md",
"mascot": [{"item": "藍 (Ai)", "imgNum": "1"}], "mascot": [{"item": "藍 (Ai)", "imgNum": "1"}],
"dwellers": "Miskist", "dwellers": "Miskist",

527
source/_data/tools.json Normal file
View file

@ -0,0 +1,527 @@
{
"apps":
[
{
"title": "Guppe",
"source": "https://github.com/wmurphyrd/guppe",
"protocols": "ActivityPub",
"site": "https://gup.pe",
"logo": "/img/misc/guppe.png",
"servers": "",
"description": "Social groups for Mastodon and other ActivityPub networks.",
"codeLanguage": "Javascript",
"techStack": "Node.js, Express, Vue",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Utils"]
},
{
"title": "Nextcloud-Social",
"source": "https://github.com/nextcloud/social",
"protocols": "ActivityPub",
"site": "https://apps.nextcloud.com/apps/social",
"logo": "/img/misc/nextcloud.png",
"servers": "",
"description": "Social networking app for NextCloud users.",
"codeLanguage": "PHP",
"techStack": "Node.js, Vue, SCSS",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Plugins"]
},
{
"title": "Vervis",
"source": "https://dev.angeley.es/s/fr33domlover/r/vervis/s",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A project hosting and management application. Implementation of ForgeFed.",
"codeLanguage": "Haskell",
"techStack": "",
"license": "AGPL-3.0 / CC0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Tools"]
},
{
"title": "ForgeFed",
"source": "https://notabug.org/peers/forgefed",
"protocols": "ActivityPub",
"site": "https://forgefed.peers.community",
"logo": "/img/misc/forgefed.svg",
"servers": "",
"description": "Upcoming federation protocol for enabling interoperability between version control services.",
"codeLanguage": "",
"techStack": "",
"license": "CC-1.0",
"FediAccount": "https://floss.social/@forgefed",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Specs"]
},
{
"title": "Nautilus",
"source": "https://github.com/aaronpk/Nautilus",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A standalone service to deliver posts from your own website to ActivityPub followers.",
"codeLanguage": "PHP",
"techStack": "Laravel, Vue",
"license": "Apache-2.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Utils"]
},
{
"title": "Pherephone",
"source": "https://github.com/writeas/pherephone",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "An ActivityPub server that reblogs all the statuses of certain actors. You set it up to follow a few accounts and it Announces everything they post.",
"codeLanguage": "Go",
"techStack": "",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Utils"]
},
{
"title": "Go-Fed Activity",
"source": "https://github.com/go-fed/activity",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "ActivityStreams & ActivityPub in golang.",
"codeLanguage": "Go",
"techStack": "",
"license": "BSD-3-clause",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Libs"]
},
{
"title": "BridgyFed",
"source": "https://github.com/snarfed/bridgy-fed",
"protocols": "ActivityPub, OStatus",
"site": "https://fed.brid.gy",
"description": "Bridges the IndieWeb to federated social networks: ActivityPub, OStatus, etc.",
"codeLanguage": "Python",
"techStack": "",
"license": "CC-0",
"FediAccount": "",
"logo": "",
"servers": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": true,
"categories": ["Bridges"]
},
{
"title": "Federation",
"source": "https://git.feneas.org/jaywink/federation",
"protocols": "ActivityPub, diaspora",
"site": "https://federation.readthedocs.io",
"logo": "",
"servers": "",
"description": "Python library to abstract social web federation protocols like ActivityPub and diaspora.",
"codeLanguage": "Python",
"techStack": "Django",
"license": "BSD-3-clause",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": true,
"OStatusClass": false,
"categories": ["Libs"]
},
{
"title": "Little Boxes",
"source": "https://github.com/tsileo/little-boxes",
"protocols": "ActivityPub",
"site": "https://little-boxes.readthedocs.io",
"logo": "",
"servers": "",
"description": "Tiny ActivityPub framework written in Python, both database and server agnostic.",
"codeLanguage": "Python",
"techStack": "",
"license": "ISC",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Libs"]
},
{
"title": "Python ActivityPub",
"source": "https://github.com/dsblank/activitypub",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A general Python ActivityPub library.",
"codeLanguage": "Python",
"techStack": "",
"license": "MPL-2.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Libs"]
},
{
"title": "ActivityPub PHP",
"source": "https://github.com/pterotype-project/activitypub-php",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A PHP implementation of the ActivityPub protocol.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "https://mastodon.technology/@jdormit",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Libs"]
},
{
"title": "Express ActivityPub",
"source": "https://github.com/dariusk/express-activitypub",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A simple reference implementation of an ActivityPub server using Express.js.",
"codeLanguage": "Javascript",
"techStack": "Express",
"license": "MIT",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Libs"]
},
{
"title": "ActivityPub Express",
"source": "https://github.com/wmurphyrd/activitypub-express",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "Modular ActivityPub implementation as Express.js middleware to easily add decentralization and federation to Node apps.",
"codeLanguage": "Javascript",
"techStack": "Express",
"license": "-",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Libs"]
},
{
"title": "distbin",
"source": "https://github.com/gobengo/distbin",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "https://distbin.com",
"description": "Post bin with distributed social features.",
"codeLanguage": "Typescript",
"techStack": "",
"license": "Apache-2.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Tools"]
},
{
"title": "WordPress-ActivityPub",
"source": "https://github.com/pfefferle/wordpress-activitypub",
"protocols": "ActivityPub",
"site": "https://wordpress.org/plugins/activitypub",
"logo": "",
"servers": "",
"description": "ActivityPub for WordPress.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Plugins"]
},
{
"title": "WordPress-OStatus",
"source": "https://github.com/pfefferle/wordpress-ostatus",
"protocols": "OStatus",
"site": "https://wordpress.org/plugins/ostatus-for-wordpress",
"logo": "",
"servers": "",
"description": "An OStatus plugin for WordPress.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "",
"apClass": false,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": true,
"categories": ["Plugins"]
},
{
"title": "LitePub",
"source": "https://github.com/litepub/litepub",
"protocols": "ActivityPub",
"site": "https://litepub.social/litepub",
"logo": "",
"servers": "",
"description": "Litepub protocol specification.",
"codeLanguage": "",
"techStack": "",
"license": "-",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Specs"]
},
{
"title": "p3k",
"source": "https://github.com/aaronpk/p3k",
"protocols": "ActivityPub",
"site": "https://indieweb.org/p3k",
"logo": "",
"servers": "https://the-federation.info/p3k",
"description": "Components of the sites aaronparecki.com and indiewebcat.com.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Other"]
},
{
"title": "Activity relay",
"source": "https://git.pleroma.social/pleroma/relay",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "https://fediverse.network/activityrelay",
"description": "Generic LitePub relay, works with all LitePub consumers and with Mastodon.",
"codeLanguage": "Python",
"techStack": "",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Relays"]
},
{
"title": "Pub relay",
"source": "https://source.joinmastodon.org/mastodon/pub-relay",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A service-type ActivityPub actor that will re-broadcast anything sent to it to anyone who subscribes to it.",
"codeLanguage": "Crystal",
"techStack": "",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Relays"]
},
{
"title": "Social relay",
"source": "https://github.com/jaywink/social-relay",
"protocols": "diaspora",
"site": "",
"logo": "",
"servers": "https://the-federation.info/social-relay",
"description": "Public post relay for the diaspora* federated social network protocol.",
"codeLanguage": "Python",
"techStack": "",
"license": "AGPL-3.0",
"FediAccount": "",
"apClass": false,
"zotClass": false,
"diasporaClass": true,
"OStatusClass": false,
"categories": ["Relays"]
},
{
"title": "Seattle relay",
"source": "https://gitlab.com/jankysolutions/social.seattle.wa.us/relay",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "https://fediverse.network/social.seattle.wa.us-relay",
"description": "Something like the Pleroma relay but with crazy things like workers.",
"codeLanguage": "Python",
"techStack": "",
"license": "-",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Relays"]
},
{
"title": "Pterotype",
"source": "https://github.com/pterotype-project/pterotype",
"protocols": "ActivityPub",
"site": "",
"logo": "/img/misc/pterotype.png",
"servers": "",
"description": "WordPress plugin. Pterotype connects your blog to the Fediverse by giving it an ActivityPub feed.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "https://mastodon.technology/@jdormit",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Plugins"]
},
{
"title": "feed2toot",
"source": "https://gitlab.com/chaica/feed2toot",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "Feed2toot automatically parses RSS feeds, identifies new posts and posts them on the Mastodon social network.",
"codeLanguage": "Python",
"techStack": "",
"license": "MIT",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Utils"]
},
{
"title": "RSS-to-ActivityPub",
"source": "https://github.com/dariusk/rss-to-activitypub",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "RSS to ActivityPub converter.",
"codeLanguage": "Javascript",
"techStack": "Node.js",
"license": "MIT",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Utils"]
},
{
"title": "Activity-PHP",
"source": "https://github.com/landrok/activitypub",
"protocols": "ActivityPub",
"site": "https://landrok.github.io/activitypub",
"logo": "",
"servers": "",
"description": "PHP implementation of ActivityPub protocol based on the ActivityStreams 2.0 data format.",
"codeLanguage": "PHP",
"techStack": "",
"license": "MIT",
"FediAccount": "https://cybre.space/@landrok",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Libs"]
},
{
"title": "Astreams",
"source": "https://github.com/MatejLach/astreams",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A hand-crafted implementation of the Activity Streams 2.0 specification in Go.",
"codeLanguage": "Go",
"techStack": "",
"license": "AGPL-3.0",
"FediAccount": "https://social.matej-lach.me/@MatejLach",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Libs"]
},
{
"title": "ActivityPub-mock",
"source": "https://gitlab.com/evanp/activitypub-mock",
"protocols": "ActivityPub",
"site": "",
"logo": "",
"servers": "",
"description": "A mock ActivityPub server to use in testing code.",
"codeLanguage": "Javascript",
"techStack": "",
"license": "Apache-2.0",
"FediAccount": "",
"apClass": true,
"zotClass": false,
"diasporaClass": false,
"OStatusClass": false,
"categories": ["Libs"]
}
]
}

7
source/en/tools/index.md Normal file
View file

@ -0,0 +1,7 @@
---
layout: "tools"
title: ""
banner: "/img/misc-bg.png"
percent: "45% 100%"
---

View file

@ -13,7 +13,7 @@
if (page.layout == 'crystalball') { if (page.layout == 'crystalball') {
ball = true; ball = true;
} }
if (page.layout == 'miscellaneous') { if (page.layout == 'miscellaneous' || page.layout == 'tools') {
misc = "miscellaneous"; misc = "miscellaneous";
} }
if (page.layout == 'post') { if (page.layout == 'post') {

View file

@ -23,32 +23,25 @@ layout: layout
const apps = site.data.miscellaneous.apps; const apps = site.data.miscellaneous.apps;
const langList = langCount(apps).sort((a,b) => b.count - a.count); const langList = langCount(apps).sort((a,b) => b.count - a.count);
const byCategory = [['snMacro', 'Social network (macro)'], ['snMicro', 'Social network (micro)'], ['blogPub', 'Blog and Publishing'], ['media', 'Media sharing'], ['links', 'Link sharing'], ['evMeet', 'Events and Meetups'], ['files', 'File hosting'], ['data', 'Dataset exchange'], ['reviews', 'Reviewing'], ['games', 'Gaming']];
const byProtocol = [['sortDiaspora', 'diaspora'], ['sortZot', 'Zot'], ['sortAP', 'ActivityPub'], ['sortOstatus', 'OStatus']];
%> %>
<%- partial('_partial/heroheader') %> <%- partial('_partial/heroheader') %>
<article class="contents misc"> <article class="contents misc">
<h2>EXPLORE FEDIVERSE SOFTWARE</h2> <h2>EXPLORE FEDIVERSE SOFTWARE</h2>
<a class="dark-ui u-block u-center" href="/en/tools" style="border: 0; color: #fb4e4e;">→ Check out other Fediverse Tools ←</a></h5>
<h4>Sort by category:</h4> <h4>Sort by category:</h4>
<label class="option" for="snMacro">Social network (macro)</label><input id="snMacro" type="checkbox"> <% for (item in byCategory) { %>
<label class="option" for="snMicro">Social network (micro)</label><input id="snMicro" type="checkbox"> <label class="option" for="<%= byCategory[item][0] %>"><%= byCategory[item][1] %></label><input id="<%= byCategory[item][0] %>" type="checkbox">
<label class="option" for="blogPub">Blog &#38; Publishing</label><input id="blogPub" type="checkbox"> <% } %>
<label class="option" for="media">Media sharing</label><input id="media" type="checkbox">
<label class="option" for="links">Link sharing</label><input id="links" type="checkbox">
<label class="option" for="evMeet">Events &#38; meetups</label><input id="evMeet" type="checkbox">
<label class="option" for="files">File hosting</label> <input id="files" type="checkbox">
<label class="option" for="data">Dataset exchange</label><input id="data" type="checkbox">
<label class="option" for="coop">Cooperatives</label><input id="coop" type="checkbox">
<label class="option" for="dev">Developer Tools</label><input id="dev" type="checkbox">
<label class="option" for="plugins">Plugins</label><input id="plugins" type="checkbox">
<label class="option" for="relays">Relays</label><input id="relays" type="checkbox">
<h4>Sort by protocol:</h4> <h4>Sort by protocol:</h4>
<label class="option" for="sortDiaspora">diaspora</label> <input id="sortDiaspora" type="checkbox"> <% for (item in byProtocol) { %>
<label class="option" for="sortZot">Zot</label> <input id="sortZot" type="checkbox"> <label class="option" for="<%= byProtocol[item][0] %>"><%= byProtocol[item][1] %></label><input id="<%= byProtocol[item][0] %>" type="checkbox">
<label class="option" for="sortAP">ActivityPub</label> <input id="sortAP" type="checkbox"> <% } %>
<label class="option" for="sortOstatus">OStatus</label> <input id="sortOstatus" type="checkbox">
<h4>Sort by code language:</h4> <h4>Sort by code language:</h4>
<label class="option" for="all">All</label><input id="all" type="radio" name="radio"> <label class="option" for="all">All</label><input id="all" type="radio" name="radio">

View file

@ -0,0 +1,112 @@
---
layout: layout
---
<%
function langCount(arr) {
let langs = [];
arr.forEach(function(item) {
let lang = item.codeLanguage;
if (!lang) {return};
let check = langs.findIndex(function(x) {return x.language === lang});
if (check>=0) {
langs[check].count +=1;
} else {
let newLang = {};
newLang.language = lang;
newLang.count = 1;
langs.push(newLang);
}
});
return langs;
}
const apps = site.data.tools.apps;
const langList = langCount(apps).sort((a,b) => b.count - a.count);
const byCategory = [['libs', 'Libraries'], ['specs', 'Specifications'], ['dev', 'Tools (stuff for developers and geeks)'], ['utils', 'Utilities (bots, daemons, federators)'], ['relays', 'Relays'], ['bridges', 'Bridges'], ['plugins', 'Plugins (addon apps)'], ['other', 'Other']];
const byProtocol = [['sortDiaspora', 'diaspora'], ['sortAP', 'ActivityPub'], ['sortOstatus', 'OStatus'], ['sortZot', 'Zot']];
%>
<%- partial('_partial/heroheader') %>
<article class="contents misc">
<h2>EXPLORE FEDIVERSE TOOLS</h2>
<h4>Sort by category:</h4>
<% for (item in byCategory) { %>
<label class="option" for="<%= byCategory[item][0] %>"><%= byCategory[item][1] %></label><input id="<%= byCategory[item][0] %>" type="checkbox">
<% } %>
<h4>Sort by protocol:</h4>
<% for (item in byProtocol) { %>
<label class="option" for="<%= byProtocol[item][0] %>"><%= byProtocol[item][1] %></label><input id="<%= byProtocol[item][0] %>" type="checkbox">
<% } %>
<h4>Sort by code language:</h4>
<label class="option" for="all">All</label><input id="all" type="radio" name="radio">
<% for (i in langList) { %>
<label class="option" for="<%= langList[i].language.toLowerCase() %>"><%= langList[i].language %> <span>(<%= langList[i].count %>)</span></label><input id="<%= langList[i].language.toLowerCase() %>" type="radio" name="radio">
<% } %>
<section class="grid misc__grid cards">
<% for (item in apps) { %>
<% let type = apps[item].categories %>
<% let lang = apps[item].codeLanguage.toLowerCase() %>
<button class="card <%= lang %> <% if (apps[item].apClass) { %>ap<% } %> <% if (apps[item].zotClass) { %>zot<% } %> <% if (apps[item].diasporaClass) { %>dia<% } %> <% if (apps[item].OStatusClass) { %>os<% } %> <% for (t in type) { %> <%=type[t]%> <% } %>">
<div class="card__content">
<div class="card__title">
<% if (apps[item].logo) { %><img src="<%= apps[item].logo %>" alt="logo"><% } %>
<p class="title u-emphasize"><%= apps[item].title %></p>
</div>
<div class="card__body">
<% if (apps[item].site) { %>
<h4 class="card__subtitle">Website</h4>
<% let path = apps[item].site.split('://') %>
<p><a href="<%= apps[item].site %>"><%= path[1] %></a>
<svg role="img"><title>remote link</title><use xlink:href="#icon-link"></use></svg></p>
<% } %>
<h4 class="card__subtitle">Source code</h4>
<p><a href="<%= apps[item].source %>">repository</a> <svg role="img"><title>remote link</title><use xlink:href="#icon-link"></use></svg></p>
<% if (apps[item].servers) { %>
<h4 class="card__subtitle">Servers</h4>
<p><a href="<%= apps[item].servers %>">list</a> <svg role="img"><title>remote link</title><use xlink:href="#icon-link"></use></svg></p>
<% } %>
<% if (apps[item].FediAccount) { %>
<h4 class="card__subtitle">Contact</h4>
<p><a href="<%= apps[item].FediAccount %>">account</a> <svg role="img"><title>remote link</title><use xlink:href="#icon-link"></use></svg></p>
<% } %>
<span class="card__more u-emphasize">more info<i>▶</i</span>
</div>
<div class='card__extra'>
<% if (apps[item].codeLanguage) { %>
<h4 class="card__subtitle">Code language</h4>
<p><%= apps[item].codeLanguage %></p>
<% } %>
<% if (apps[item].techStack) { %>
<h4 class="card__subtitle">Tech stack</h4>
<p><%= apps[item].techStack %></p>
<% } %>
<h4 class="card__subtitle">Protocols</h4>
<p><%= apps[item].protocols %></p>
<% if (apps[item].description) { %>
<h4 class="card__subtitle">About</h4>
<p class="card__about">
<%- truncate( (apps[item].description), {length: 250, omission: '...'}) %>
</p>
<% } %>
</div>
</div>
</button>
<% } %>
</section>
<footer>
<p>Something's missing? <a class="dark-ui" href="https://git.feneas.org/feneas/fediverse/blob/master/CONTRIBUTING.md#submitting-software">Add</a> it.</p>
<p>Software no longer maintained, renamed, broken link? Please, <a class="dark-ui" href="https://git.feneas.org/feneas/fediverse/issues">let us know</a>.</p>
<p>Special thanks to <a class="dark-ui" href="https://mastodon.nzoss.nz/@strypey">@strypey</a> - for curating this <a class="dark-ui" href="https://git.feneas.org/feneas/fediverse/wikis/watchlist-for-activitypub-apps">list</a>.</p>
<p>Other sources: implementation report on <a class="dark-ui" href="http://activitypub.rocks/implementation-report">activitypub.rocks</a> website.</p>
</footer>
</article>

View file

@ -20,7 +20,7 @@
.misc h2 { .misc h2 {
text-align: center; text-align: center;
margin-bottom: 1em; margin-bottom: .5em;
} }
.misc > h4 { .misc > h4 {
@ -248,11 +248,18 @@
#links:checked ~ .misc__grid .card:not(.Links), #links:checked ~ .misc__grid .card:not(.Links),
#evMeet:checked ~ .misc__grid .card:not(.Ev-Meet), #evMeet:checked ~ .misc__grid .card:not(.Ev-Meet),
#files:checked ~ .misc__grid .card:not(.Files), #files:checked ~ .misc__grid .card:not(.Files),
#dev:checked ~ .misc__grid .card:not(.DevTools),
#data:checked ~ .misc__grid .card:not(.DataForge), #data:checked ~ .misc__grid .card:not(.DataForge),
#coop:checked ~ .misc__grid .card:not(.Coop), #reviews:checked ~ .misc__grid .card:not(.Reviews),
#plugins:checked ~ .misc__grid .card:not(.Plugins), #games:checked ~ .misc__grid .card:not(.Games),
#libs:checked ~ .misc__grid .card:not(.Libs),
#specs:checked ~ .misc__grid .card:not(.Specs),
#dev:checked ~ .misc__grid .card:not(.Tools),
#utils:checked ~ .misc__grid .card:not(.Utils),
#tests:checked ~ .misc__grid .card:not(.Tests),
#relays:checked ~ .misc__grid .card:not(.Relays), #relays:checked ~ .misc__grid .card:not(.Relays),
#bridges:checked ~ .misc__grid .card:not(.Bridges),
#plugins:checked ~ .misc__grid .card:not(.Plugins),
#other:checked ~ .misc__grid .card:not(.Other),
#python:checked ~ .misc__grid .card:not(.python), #python:checked ~ .misc__grid .card:not(.python),
#php:checked ~ .misc__grid .card:not(.php), #php:checked ~ .misc__grid .card:not(.php),
#javascript:checked ~ .misc__grid .card:not(.javascript), #javascript:checked ~ .misc__grid .card:not(.javascript),