From 854f04ba5d5c7567928651eb35f8df9c2123866e Mon Sep 17 00:00:00 2001 From: Thibault Martin Date: Mon, 3 Apr 2023 09:51:18 +0200 Subject: [PATCH] Zola bridges (#1694) * Lay the structure for the bridges page * Add all platforms and their logo * Add initial structure for the bridge implementations page * Make the page more mobile friendly * Typo * Add missing elements on the bridges implementation page * Move the data in toml files for the sake of consistency --- content/ecosystem/bridges/_index.md | 15 ++ content/ecosystem/bridges/discord/_index.md | 5 + .../ecosystem/bridges/discord/bridges.toml | 91 +++++++++ content/ecosystem/bridges/discord/logo.svg | 4 + content/ecosystem/bridges/email/_index.md | 4 + content/ecosystem/bridges/email/bridges.toml | 0 content/ecosystem/bridges/email/logo.svg | 4 + .../bridges/facebook_messenger/_index.md | 4 + .../bridges/facebook_messenger/bridges.toml | 0 .../bridges/facebook_messenger/logo.svg | 12 ++ .../ecosystem/bridges/google_chat/_index.md | 4 + .../bridges/google_chat/bridges.toml | 0 .../ecosystem/bridges/google_chat/logo.svg | 5 + content/ecosystem/bridges/groupme/_index.md | 4 + .../ecosystem/bridges/groupme/bridges.toml | 0 content/ecosystem/bridges/groupme/logo.svg | 19 ++ content/ecosystem/bridges/imessage/_index.md | 4 + .../ecosystem/bridges/imessage/bridges.toml | 0 content/ecosystem/bridges/imessage/logo.svg | 120 ++++++++++++ content/ecosystem/bridges/index.md | 21 --- content/ecosystem/bridges/instagram/_index.md | 4 + .../ecosystem/bridges/instagram/bridges.toml | 0 content/ecosystem/bridges/instagram/logo.svg | 21 +++ content/ecosystem/bridges/irc/_index.md | 4 + content/ecosystem/bridges/irc/bridges.toml | 0 content/ecosystem/bridges/irc/logo.svg | 3 + content/ecosystem/bridges/kakaotalk/_index.md | 4 + .../ecosystem/bridges/kakaotalk/bridges.toml | 0 content/ecosystem/bridges/kakaotalk/logo.svg | 1 + content/ecosystem/bridges/line/_index.md | 4 + content/ecosystem/bridges/line/bridges.toml | 0 content/ecosystem/bridges/line/logo.svg | 1 + content/ecosystem/bridges/linkedin/_index.md | 4 + .../ecosystem/bridges/linkedin/bridges.toml | 0 content/ecosystem/bridges/linkedin/logo.svg | 5 + content/ecosystem/bridges/mastodon/_index.md | 4 + .../ecosystem/bridges/mastodon/bridges.toml | 0 content/ecosystem/bridges/mastodon/logo.svg | 11 ++ .../ecosystem/bridges/mattermost/_index.md | 4 + .../ecosystem/bridges/mattermost/bridges.toml | 0 content/ecosystem/bridges/mattermost/logo.svg | 4 + content/ecosystem/bridges/mumble/_index.md | 4 + content/ecosystem/bridges/mumble/bridges.toml | 0 content/ecosystem/bridges/mumble/logo.svg | 65 +++++++ content/ecosystem/bridges/signal/_index.md | 4 + content/ecosystem/bridges/signal/bridges.toml | 0 content/ecosystem/bridges/signal/logo.svg | 4 + content/ecosystem/bridges/skype/_index.md | 4 + content/ecosystem/bridges/skype/bridges.toml | 0 content/ecosystem/bridges/skype/logo.svg | 32 ++++ content/ecosystem/bridges/slack/_index.md | 5 + content/ecosystem/bridges/slack/bridges.toml | 31 ++++ content/ecosystem/bridges/slack/logo.svg | 10 + content/ecosystem/bridges/sms/_index.md | 4 + content/ecosystem/bridges/sms/bridges.toml | 0 content/ecosystem/bridges/sms/logo.svg | 3 + content/ecosystem/bridges/telegram/_index.md | 4 + .../ecosystem/bridges/telegram/bridges.toml | 0 content/ecosystem/bridges/telegram/logo.svg | 12 ++ .../ecosystem/bridges/tencent_qq/_index.md | 4 + .../ecosystem/bridges/tencent_qq/bridges.toml | 0 content/ecosystem/bridges/tencent_qq/logo.svg | 10 + content/ecosystem/bridges/tox/_index.md | 4 + content/ecosystem/bridges/tox/bridges.toml | 0 content/ecosystem/bridges/tox/logo.svg | 3 + content/ecosystem/bridges/twitter/_index.md | 4 + .../ecosystem/bridges/twitter/bridges.toml | 0 content/ecosystem/bridges/twitter/logo.svg | 4 + content/ecosystem/bridges/wechat/_index.md | 4 + content/ecosystem/bridges/wechat/bridges.toml | 0 content/ecosystem/bridges/wechat/logo.svg | 11 ++ content/ecosystem/bridges/whatsapp/_index.md | 4 + .../ecosystem/bridges/whatsapp/bridges.toml | 0 content/ecosystem/bridges/whatsapp/logo.svg | 19 ++ sass/_bridges.scss | 174 ++++++++++++++++++ sass/_projects.scss | 1 + sass/style.scss | 1 + static/assets/cross_unsupported.svg | 4 + static/assets/documentation.svg | 5 + static/assets/repository.svg | 5 + static/assets/support.svg | 4 + static/assets/tick_supported.svg | 3 + .../ecosystem/bridge_implementations.html | 65 +++++++ templates/ecosystem/bridges.html | 30 ++- 84 files changed, 905 insertions(+), 26 deletions(-) create mode 100644 content/ecosystem/bridges/_index.md create mode 100644 content/ecosystem/bridges/discord/_index.md create mode 100644 content/ecosystem/bridges/discord/bridges.toml create mode 100644 content/ecosystem/bridges/discord/logo.svg create mode 100644 content/ecosystem/bridges/email/_index.md create mode 100644 content/ecosystem/bridges/email/bridges.toml create mode 100644 content/ecosystem/bridges/email/logo.svg create mode 100644 content/ecosystem/bridges/facebook_messenger/_index.md create mode 100644 content/ecosystem/bridges/facebook_messenger/bridges.toml create mode 100644 content/ecosystem/bridges/facebook_messenger/logo.svg create mode 100644 content/ecosystem/bridges/google_chat/_index.md create mode 100644 content/ecosystem/bridges/google_chat/bridges.toml create mode 100644 content/ecosystem/bridges/google_chat/logo.svg create mode 100644 content/ecosystem/bridges/groupme/_index.md create mode 100644 content/ecosystem/bridges/groupme/bridges.toml create mode 100644 content/ecosystem/bridges/groupme/logo.svg create mode 100644 content/ecosystem/bridges/imessage/_index.md create mode 100644 content/ecosystem/bridges/imessage/bridges.toml create mode 100644 content/ecosystem/bridges/imessage/logo.svg delete mode 100644 content/ecosystem/bridges/index.md create mode 100644 content/ecosystem/bridges/instagram/_index.md create mode 100644 content/ecosystem/bridges/instagram/bridges.toml create mode 100644 content/ecosystem/bridges/instagram/logo.svg create mode 100644 content/ecosystem/bridges/irc/_index.md create mode 100644 content/ecosystem/bridges/irc/bridges.toml create mode 100644 content/ecosystem/bridges/irc/logo.svg create mode 100644 content/ecosystem/bridges/kakaotalk/_index.md create mode 100644 content/ecosystem/bridges/kakaotalk/bridges.toml create mode 100644 content/ecosystem/bridges/kakaotalk/logo.svg create mode 100644 content/ecosystem/bridges/line/_index.md create mode 100644 content/ecosystem/bridges/line/bridges.toml create mode 100644 content/ecosystem/bridges/line/logo.svg create mode 100644 content/ecosystem/bridges/linkedin/_index.md create mode 100644 content/ecosystem/bridges/linkedin/bridges.toml create mode 100644 content/ecosystem/bridges/linkedin/logo.svg create mode 100644 content/ecosystem/bridges/mastodon/_index.md create mode 100644 content/ecosystem/bridges/mastodon/bridges.toml create mode 100644 content/ecosystem/bridges/mastodon/logo.svg create mode 100644 content/ecosystem/bridges/mattermost/_index.md create mode 100644 content/ecosystem/bridges/mattermost/bridges.toml create mode 100644 content/ecosystem/bridges/mattermost/logo.svg create mode 100644 content/ecosystem/bridges/mumble/_index.md create mode 100644 content/ecosystem/bridges/mumble/bridges.toml create mode 100644 content/ecosystem/bridges/mumble/logo.svg create mode 100644 content/ecosystem/bridges/signal/_index.md create mode 100644 content/ecosystem/bridges/signal/bridges.toml create mode 100644 content/ecosystem/bridges/signal/logo.svg create mode 100644 content/ecosystem/bridges/skype/_index.md create mode 100644 content/ecosystem/bridges/skype/bridges.toml create mode 100644 content/ecosystem/bridges/skype/logo.svg create mode 100644 content/ecosystem/bridges/slack/_index.md create mode 100644 content/ecosystem/bridges/slack/bridges.toml create mode 100644 content/ecosystem/bridges/slack/logo.svg create mode 100644 content/ecosystem/bridges/sms/_index.md create mode 100644 content/ecosystem/bridges/sms/bridges.toml create mode 100644 content/ecosystem/bridges/sms/logo.svg create mode 100644 content/ecosystem/bridges/telegram/_index.md create mode 100644 content/ecosystem/bridges/telegram/bridges.toml create mode 100644 content/ecosystem/bridges/telegram/logo.svg create mode 100644 content/ecosystem/bridges/tencent_qq/_index.md create mode 100644 content/ecosystem/bridges/tencent_qq/bridges.toml create mode 100644 content/ecosystem/bridges/tencent_qq/logo.svg create mode 100644 content/ecosystem/bridges/tox/_index.md create mode 100644 content/ecosystem/bridges/tox/bridges.toml create mode 100644 content/ecosystem/bridges/tox/logo.svg create mode 100644 content/ecosystem/bridges/twitter/_index.md create mode 100644 content/ecosystem/bridges/twitter/bridges.toml create mode 100644 content/ecosystem/bridges/twitter/logo.svg create mode 100644 content/ecosystem/bridges/wechat/_index.md create mode 100644 content/ecosystem/bridges/wechat/bridges.toml create mode 100644 content/ecosystem/bridges/wechat/logo.svg create mode 100644 content/ecosystem/bridges/whatsapp/_index.md create mode 100644 content/ecosystem/bridges/whatsapp/bridges.toml create mode 100644 content/ecosystem/bridges/whatsapp/logo.svg create mode 100644 sass/_bridges.scss create mode 100644 static/assets/cross_unsupported.svg create mode 100644 static/assets/documentation.svg create mode 100644 static/assets/repository.svg create mode 100644 static/assets/support.svg create mode 100644 static/assets/tick_supported.svg create mode 100644 templates/ecosystem/bridge_implementations.html diff --git a/content/ecosystem/bridges/_index.md b/content/ecosystem/bridges/_index.md new file mode 100644 index 000000000..4c09bb084 --- /dev/null +++ b/content/ecosystem/bridges/_index.md @@ -0,0 +1,15 @@ ++++ +title = "Bridges" +weight = 2 +template = "ecosystem/bridges.html" +extra.summary = """ +Bridges allow you to connect Matrix to a third-party platform, and interact +seamlessly. +""" ++++ + +An important idea in Matrix is Interoperability. This means that Matrix is open +to exchanging data and messages with other platforms using an +[Open Standard](https://matrix.org/docs/spec). We refer to the connection to +other platforms as bridging. Click on the platform you would like to bridge to +to see all the existing bridges. diff --git a/content/ecosystem/bridges/discord/_index.md b/content/ecosystem/bridges/discord/_index.md new file mode 100644 index 000000000..447c3a192 --- /dev/null +++ b/content/ecosystem/bridges/discord/_index.md @@ -0,0 +1,5 @@ ++++ +title = "Discord" +weight = 100 +template = "ecosystem/bridge_implementations.html" ++++ diff --git a/content/ecosystem/bridges/discord/bridges.toml b/content/ecosystem/bridges/discord/bridges.toml new file mode 100644 index 000000000..b9f446a09 --- /dev/null +++ b/content/ecosystem/bridges/discord/bridges.toml @@ -0,0 +1,91 @@ +[[bridges]] +name = "matrix-appservice-discord" +maintainer = "Matrix.org Foundation" +summary = "This project bridges Discord to Matrix via the Application Service API" +maturity = "Beta" +language = "TypeScript" +license = "Apache-2.0" +docs = "https://github.com/matrix-org/matrix-appservice-discord#end-user-documentation" +repo = "https://github.com/matrix-org/matrix-appservice-discord" +room = "#discord:matrix.org" +featured = true +privilege.platform = "Admin" # Free text +privilege.matrix = "Homeserver Admin" # Any of Homeserver Admin, Room Admin, None +[bridges.supports] +dm = true +channels = true +formatted_text = true +message_media = true +replies = true +mentions = true +threads = false +redactions = true +editing = true +reactions = true +presence = true +typing_notifications = false + +[[bridges]] +name = "mautrix-discord" +maintainer = "Tulir" +summary = "A Matrix-Discord puppeting bridge" +maturity = "Beta" +language = "Go" +license = "AGPL-3.0-or-later" +docs = "https://docs.mau.fi/bridges/go/setup.html?bridge=discord" +repo = "https://github.com/mautrix/discord" +room = "#discord:maunium.net" +featured = true +privilege.platform = "None" +privilege.matrix = "None" +[bridges.supports] +dm = true +channels = true +formatted_text = true +message_media = true +replies = true +mentions = true +threads = true +redactions = true +editing = true +reactions = true +presence = true +typing_notifications = true + +[[bridges]] +name = "matrix-discord-bridge" +maintainer = "git-bruh" +summary = """ +A simple bridge between Matrix and Discord written in Python. + +It contains two bridges: + +A puppeting appservice: The puppeting bridge written with minimal dependencies. +Running this requires a self-hosted homeserver. + +A non-puppeting bridge: The non-puppeting plaintext bridge written with +matrix-nio and discord.py, most people would want to use this one if running on +heroku or similar and don't have their own server. **NOTE: This is unmaintained +and might break in the future due to Discord changes.** + +""" +maturity = "Alpha" +language = "Python" +license = "MIT" +repo = "https://github.com/git-bruh/matrix-discord-bridge" +featured = false +privilege.platform = "Admin" +privilege.matrix = "Homeserver Admin" +[bridges.supports] +dm = true +channels = true +formatted_text = true +message_media = true +replies = true +mentions = true +threads = false +redactions = true +editing = true +reactions = true +presence = false +typing_notifications = true diff --git a/content/ecosystem/bridges/discord/logo.svg b/content/ecosystem/bridges/discord/logo.svg new file mode 100644 index 000000000..683a79a89 --- /dev/null +++ b/content/ecosystem/bridges/discord/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/content/ecosystem/bridges/email/_index.md b/content/ecosystem/bridges/email/_index.md new file mode 100644 index 000000000..3257eff11 --- /dev/null +++ b/content/ecosystem/bridges/email/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Email" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/email/bridges.toml b/content/ecosystem/bridges/email/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/email/logo.svg b/content/ecosystem/bridges/email/logo.svg new file mode 100644 index 000000000..d0a719145 --- /dev/null +++ b/content/ecosystem/bridges/email/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/content/ecosystem/bridges/facebook_messenger/_index.md b/content/ecosystem/bridges/facebook_messenger/_index.md new file mode 100644 index 000000000..3694e8a59 --- /dev/null +++ b/content/ecosystem/bridges/facebook_messenger/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Messenger" +weight = 600 ++++ diff --git a/content/ecosystem/bridges/facebook_messenger/bridges.toml b/content/ecosystem/bridges/facebook_messenger/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/facebook_messenger/logo.svg b/content/ecosystem/bridges/facebook_messenger/logo.svg new file mode 100644 index 000000000..9f0f3fde6 --- /dev/null +++ b/content/ecosystem/bridges/facebook_messenger/logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/content/ecosystem/bridges/google_chat/_index.md b/content/ecosystem/bridges/google_chat/_index.md new file mode 100644 index 000000000..aaf0095a1 --- /dev/null +++ b/content/ecosystem/bridges/google_chat/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Google Chat" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/google_chat/bridges.toml b/content/ecosystem/bridges/google_chat/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/google_chat/logo.svg b/content/ecosystem/bridges/google_chat/logo.svg new file mode 100644 index 000000000..46a21cc8e --- /dev/null +++ b/content/ecosystem/bridges/google_chat/logo.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/content/ecosystem/bridges/groupme/_index.md b/content/ecosystem/bridges/groupme/_index.md new file mode 100644 index 000000000..8ed99662f --- /dev/null +++ b/content/ecosystem/bridges/groupme/_index.md @@ -0,0 +1,4 @@ ++++ +title = "GroupMe" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/groupme/bridges.toml b/content/ecosystem/bridges/groupme/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/groupme/logo.svg b/content/ecosystem/bridges/groupme/logo.svg new file mode 100644 index 000000000..b8bfce698 --- /dev/null +++ b/content/ecosystem/bridges/groupme/logo.svg @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/content/ecosystem/bridges/imessage/_index.md b/content/ecosystem/bridges/imessage/_index.md new file mode 100644 index 000000000..b91d80d50 --- /dev/null +++ b/content/ecosystem/bridges/imessage/_index.md @@ -0,0 +1,4 @@ ++++ +title = "iMessage" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/imessage/bridges.toml b/content/ecosystem/bridges/imessage/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/imessage/logo.svg b/content/ecosystem/bridges/imessage/logo.svg new file mode 100644 index 000000000..493580bff --- /dev/null +++ b/content/ecosystem/bridges/imessage/logo.svg @@ -0,0 +1,120 @@ + + + + + iMessage logo + + + + + + + + + + + + image/svg+xml + + iMessage logo + 02/04/2018 + + + Apple, Inc. + + + + + CMetalCore + + + https://upload.wikimedia.org/wikipedia/commons/8/85/IMessage_icon.png + + + + + + + + + + diff --git a/content/ecosystem/bridges/index.md b/content/ecosystem/bridges/index.md deleted file mode 100644 index 6d49e8524..000000000 --- a/content/ecosystem/bridges/index.md +++ /dev/null @@ -1,21 +0,0 @@ -+++ -title = "Bridges" -weight = 2 -template = "ecosystem/bridges.html" -extra.summary = """ -Bridges allow you to connect Matrix to a third-party platform, and interact -seamlessly. -""" -+++ - -An important idea in Matrix is *Interoperability*. This means that Matrix is open to exchanging data and messages with other platforms using an Open Standard. We refer to the connection to other platforms as *bridging*. - -For a thorough examination of the different methods of bridging, and a discussion of the terminology involved, check out *[How do I bridge thee? Let me count the ways...](https://matrix.org/blog/2017/03/11/how-do-i-bridge-thee-let-me-count-the-ways)* - -**Portal rooms**: these control chunks of room aliases namespace. For example, #freenode_*#channelname*:matrix.org corresponds to *#channelname* on Freenode. In this way, Matrix users can transparently join IRC channels on Freenode. Portal rooms are typically managed by the remote network's side of the room. - -**Plumbed rooms**: these rooms are "plumbed" into one or more specific remote rooms by configuring a bridge (which can be run by anyone). For instance, #matrix:matrix.org is plumbed into #matrix on Freenode, matrixdotorg/#matrix on Slack, etc. Access control for Matrix users is necessarily managed by the Matrix side of the room. This is useful for using Matrix to link together different communities. - -**Bridgebot-style:** in this case, messages in either direction are conveyed by a bot residing on the given platform. This is a sub-optimal experience because metadata is lost. For example, all messages might be sent by the same bot, but with the message text prefixed with the name of the original sender. - -**Puppeting**: solves the problems of Bot-based bridging by "puppeting", meaning controlling, a user on the other side of the bridge. This means that to native users, they see messages as being sent from the correct sender. **Double-puppeting** means this is done in both directions of the bridge. This is the most preferred way of implementing a Matrix bridge. diff --git a/content/ecosystem/bridges/instagram/_index.md b/content/ecosystem/bridges/instagram/_index.md new file mode 100644 index 000000000..c7909155b --- /dev/null +++ b/content/ecosystem/bridges/instagram/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Instagram" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/instagram/bridges.toml b/content/ecosystem/bridges/instagram/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/instagram/logo.svg b/content/ecosystem/bridges/instagram/logo.svg new file mode 100644 index 000000000..77a0d8e86 --- /dev/null +++ b/content/ecosystem/bridges/instagram/logo.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/content/ecosystem/bridges/irc/_index.md b/content/ecosystem/bridges/irc/_index.md new file mode 100644 index 000000000..0581e4051 --- /dev/null +++ b/content/ecosystem/bridges/irc/_index.md @@ -0,0 +1,4 @@ ++++ +title = "IRC" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/irc/bridges.toml b/content/ecosystem/bridges/irc/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/irc/logo.svg b/content/ecosystem/bridges/irc/logo.svg new file mode 100644 index 000000000..98488267f --- /dev/null +++ b/content/ecosystem/bridges/irc/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/content/ecosystem/bridges/kakaotalk/_index.md b/content/ecosystem/bridges/kakaotalk/_index.md new file mode 100644 index 000000000..10a17af0d --- /dev/null +++ b/content/ecosystem/bridges/kakaotalk/_index.md @@ -0,0 +1,4 @@ ++++ +title = "KakaoTalk" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/kakaotalk/bridges.toml b/content/ecosystem/bridges/kakaotalk/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/kakaotalk/logo.svg b/content/ecosystem/bridges/kakaotalk/logo.svg new file mode 100644 index 000000000..e721ec2b4 --- /dev/null +++ b/content/ecosystem/bridges/kakaotalk/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/ecosystem/bridges/line/_index.md b/content/ecosystem/bridges/line/_index.md new file mode 100644 index 000000000..484a7f26b --- /dev/null +++ b/content/ecosystem/bridges/line/_index.md @@ -0,0 +1,4 @@ ++++ +title = "LINE" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/line/bridges.toml b/content/ecosystem/bridges/line/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/line/logo.svg b/content/ecosystem/bridges/line/logo.svg new file mode 100644 index 000000000..2a5c930d9 --- /dev/null +++ b/content/ecosystem/bridges/line/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/ecosystem/bridges/linkedin/_index.md b/content/ecosystem/bridges/linkedin/_index.md new file mode 100644 index 000000000..d9300bd7b --- /dev/null +++ b/content/ecosystem/bridges/linkedin/_index.md @@ -0,0 +1,4 @@ ++++ +title = "LinkedIn" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/linkedin/bridges.toml b/content/ecosystem/bridges/linkedin/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/linkedin/logo.svg b/content/ecosystem/bridges/linkedin/logo.svg new file mode 100644 index 000000000..aa5cf9e57 --- /dev/null +++ b/content/ecosystem/bridges/linkedin/logo.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/content/ecosystem/bridges/mastodon/_index.md b/content/ecosystem/bridges/mastodon/_index.md new file mode 100644 index 000000000..cd8e127d9 --- /dev/null +++ b/content/ecosystem/bridges/mastodon/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Mastodon" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/mastodon/bridges.toml b/content/ecosystem/bridges/mastodon/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/mastodon/logo.svg b/content/ecosystem/bridges/mastodon/logo.svg new file mode 100644 index 000000000..1a53794bd --- /dev/null +++ b/content/ecosystem/bridges/mastodon/logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/content/ecosystem/bridges/mattermost/_index.md b/content/ecosystem/bridges/mattermost/_index.md new file mode 100644 index 000000000..7d15bc44d --- /dev/null +++ b/content/ecosystem/bridges/mattermost/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Mattermost" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/mattermost/bridges.toml b/content/ecosystem/bridges/mattermost/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/mattermost/logo.svg b/content/ecosystem/bridges/mattermost/logo.svg new file mode 100644 index 000000000..233f90e5a --- /dev/null +++ b/content/ecosystem/bridges/mattermost/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/content/ecosystem/bridges/mumble/_index.md b/content/ecosystem/bridges/mumble/_index.md new file mode 100644 index 000000000..8ef6c5f6b --- /dev/null +++ b/content/ecosystem/bridges/mumble/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Mumble" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/mumble/bridges.toml b/content/ecosystem/bridges/mumble/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/mumble/logo.svg b/content/ecosystem/bridges/mumble/logo.svg new file mode 100644 index 000000000..31d705560 --- /dev/null +++ b/content/ecosystem/bridges/mumble/logo.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/ecosystem/bridges/signal/_index.md b/content/ecosystem/bridges/signal/_index.md new file mode 100644 index 000000000..d88383a60 --- /dev/null +++ b/content/ecosystem/bridges/signal/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Signal" +weight = 300 ++++ diff --git a/content/ecosystem/bridges/signal/bridges.toml b/content/ecosystem/bridges/signal/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/signal/logo.svg b/content/ecosystem/bridges/signal/logo.svg new file mode 100644 index 000000000..436a53d1d --- /dev/null +++ b/content/ecosystem/bridges/signal/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/content/ecosystem/bridges/skype/_index.md b/content/ecosystem/bridges/skype/_index.md new file mode 100644 index 000000000..59be4ebaa --- /dev/null +++ b/content/ecosystem/bridges/skype/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Skype" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/skype/bridges.toml b/content/ecosystem/bridges/skype/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/skype/logo.svg b/content/ecosystem/bridges/skype/logo.svg new file mode 100644 index 000000000..a34a3df31 --- /dev/null +++ b/content/ecosystem/bridges/skype/logo.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/ecosystem/bridges/slack/_index.md b/content/ecosystem/bridges/slack/_index.md new file mode 100644 index 000000000..5b82fb779 --- /dev/null +++ b/content/ecosystem/bridges/slack/_index.md @@ -0,0 +1,5 @@ ++++ +title = "Slack" +weight = 200 +template = "ecosystem/bridge_implementations.html" ++++ diff --git a/content/ecosystem/bridges/slack/bridges.toml b/content/ecosystem/bridges/slack/bridges.toml new file mode 100644 index 000000000..3d4d47c75 --- /dev/null +++ b/content/ecosystem/bridges/slack/bridges.toml @@ -0,0 +1,31 @@ +[[bridges]] +name = "matrix-appservice-slack" +maintainer = "Matrix.org Foundation" +summary = """ +The bridge allows you to connect Matrix rooms and Slack channels together. It supports bridging via webhooks or via a +dedicated slack integration (using the Events API). The bridge supports nearly all matrix message types and client features +with active development on new features as they arrive. Check the list below for feature support. + +The bridge is regularly hacked on and is accepting new PRs for bugfixes and features, come and get involved! +""" +maturity = "Stable" +language = "TypeScript" +license = "Apache-2.0" +docs = "https://matrix-appservice-slack.readthedocs.io/en/latest/getting_started/" +repo = "https://github.com/matrix-org/matrix-appservice-slack" +room = "#matrix_appservice_slack:cadair.com" +featured = true +privilege.platform = "Admin" # Free text +privilege.matrix = "Homeserver Admin" # Any of Homeserver Admin, Room Admin, None +[bridges.supports] +dm = true +channels = true +formatted_text = true +message_media = true +mentions = true +threads = false +redactions = true +editing = true +reactions = true +presence = true +typing_notifications = false diff --git a/content/ecosystem/bridges/slack/logo.svg b/content/ecosystem/bridges/slack/logo.svg new file mode 100644 index 000000000..c71c79fae --- /dev/null +++ b/content/ecosystem/bridges/slack/logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/content/ecosystem/bridges/sms/_index.md b/content/ecosystem/bridges/sms/_index.md new file mode 100644 index 000000000..dc0d7a297 --- /dev/null +++ b/content/ecosystem/bridges/sms/_index.md @@ -0,0 +1,4 @@ ++++ +title = "SMS" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/sms/bridges.toml b/content/ecosystem/bridges/sms/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/sms/logo.svg b/content/ecosystem/bridges/sms/logo.svg new file mode 100644 index 000000000..743eb0910 --- /dev/null +++ b/content/ecosystem/bridges/sms/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/content/ecosystem/bridges/telegram/_index.md b/content/ecosystem/bridges/telegram/_index.md new file mode 100644 index 000000000..e32b95f3b --- /dev/null +++ b/content/ecosystem/bridges/telegram/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Telegram" +weight = 400 ++++ diff --git a/content/ecosystem/bridges/telegram/bridges.toml b/content/ecosystem/bridges/telegram/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/telegram/logo.svg b/content/ecosystem/bridges/telegram/logo.svg new file mode 100644 index 000000000..873d3fec8 --- /dev/null +++ b/content/ecosystem/bridges/telegram/logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/content/ecosystem/bridges/tencent_qq/_index.md b/content/ecosystem/bridges/tencent_qq/_index.md new file mode 100644 index 000000000..6713dd49d --- /dev/null +++ b/content/ecosystem/bridges/tencent_qq/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Tencent QQ" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/tencent_qq/bridges.toml b/content/ecosystem/bridges/tencent_qq/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/tencent_qq/logo.svg b/content/ecosystem/bridges/tencent_qq/logo.svg new file mode 100644 index 000000000..9fd450a2e --- /dev/null +++ b/content/ecosystem/bridges/tencent_qq/logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/content/ecosystem/bridges/tox/_index.md b/content/ecosystem/bridges/tox/_index.md new file mode 100644 index 000000000..c15f5fb60 --- /dev/null +++ b/content/ecosystem/bridges/tox/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Tox" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/tox/bridges.toml b/content/ecosystem/bridges/tox/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/tox/logo.svg b/content/ecosystem/bridges/tox/logo.svg new file mode 100644 index 000000000..ef0131a80 --- /dev/null +++ b/content/ecosystem/bridges/tox/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/content/ecosystem/bridges/twitter/_index.md b/content/ecosystem/bridges/twitter/_index.md new file mode 100644 index 000000000..9241eb37b --- /dev/null +++ b/content/ecosystem/bridges/twitter/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Twitter" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/twitter/bridges.toml b/content/ecosystem/bridges/twitter/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/twitter/logo.svg b/content/ecosystem/bridges/twitter/logo.svg new file mode 100644 index 000000000..410223c9b --- /dev/null +++ b/content/ecosystem/bridges/twitter/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/content/ecosystem/bridges/wechat/_index.md b/content/ecosystem/bridges/wechat/_index.md new file mode 100644 index 000000000..5c2b3d63b --- /dev/null +++ b/content/ecosystem/bridges/wechat/_index.md @@ -0,0 +1,4 @@ ++++ +title = "WeChat" +weight = 999 ++++ diff --git a/content/ecosystem/bridges/wechat/bridges.toml b/content/ecosystem/bridges/wechat/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/wechat/logo.svg b/content/ecosystem/bridges/wechat/logo.svg new file mode 100644 index 000000000..f7b47b8d9 --- /dev/null +++ b/content/ecosystem/bridges/wechat/logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/content/ecosystem/bridges/whatsapp/_index.md b/content/ecosystem/bridges/whatsapp/_index.md new file mode 100644 index 000000000..45c963e6e --- /dev/null +++ b/content/ecosystem/bridges/whatsapp/_index.md @@ -0,0 +1,4 @@ ++++ +title = "WhatsApp" +weight = 500 ++++ diff --git a/content/ecosystem/bridges/whatsapp/bridges.toml b/content/ecosystem/bridges/whatsapp/bridges.toml new file mode 100644 index 000000000..e69de29bb diff --git a/content/ecosystem/bridges/whatsapp/logo.svg b/content/ecosystem/bridges/whatsapp/logo.svg new file mode 100644 index 000000000..3367202ec --- /dev/null +++ b/content/ecosystem/bridges/whatsapp/logo.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/sass/_bridges.scss b/sass/_bridges.scss new file mode 100644 index 000000000..39a4f81ab --- /dev/null +++ b/sass/_bridges.scss @@ -0,0 +1,174 @@ +.bridges-page.content p { + margin-block: 2.5rem; +} + +.platforms-grid { + display: grid; + grid-template-columns: repeat(auto-fill, 17rem); + row-gap: .8rem; + margin-block: 2rem 3rem; + margin-inline: auto; + + .platform { + display: flex; + flex-direction: row; + gap: 1rem; + align-items: center; + padding-block: .5rem; + padding-inline: .5rem 1rem; + max-width: fit-content; + cursor: pointer; + + color: var(--color-text); + + img { + width: 64px; + height: 64px; + + border: 1px solid #d2d2d2; + border-radius: 15px; + } + + .details { + display: flex; + flex-direction: column; + + h2 { + font-size: 1.5rem; + font-weight: 700; + margin: 0; + line-height: 1.2; + } + + p { + margin: 0; + font-size: .875rem; + color: #545454; + } + } + + &:hover { + background-color: #e9e9e9; + border-radius: 12px; + } + } +} + +.bridges_implem > :nth-child(even) { + background-color: #fafafa; +} + +.implementation { + padding: 80px; + @media (max-width: 767px) { + padding: 1rem; + } + display: grid; + grid-template-columns: 2fr 1fr; + column-gap: 1rem; + @media (max-width: 767px) { + grid-template-columns: 1fr; + } + + .recommended-chip { + display: flex; + align-items: center; + gap: .2rem; + max-width: fit-content; + font-style: normal; + border-bottom: 1px dotted var(--borders-color); + } + + h2 { + display: flex; + flex-wrap: wrap; + gap: .5rem; + } + + .project-links { + display: flex; + flex-wrap: wrap; + gap: .3rem; + + margin-bottom: 1rem; + + .pill { + display: flex; + align-items: center; + gap: .2rem; + + border: 1px solid var(--color-text); + color: var(--color-text); + border-radius: 9999px; + padding: .1rem .4rem; + + .fillme { + fill: var(--color-text); + stroke: var(--color-text); + } + + .fillme-inverse { + stroke: #fff; + } + + &:hover { + background-color: var(--color-text); + color: #fff; + .fillme { + fill: #fff; + stroke: #fff; + } + + .fillme-inverse { + stroke: var(--color-text); + } + } + } + } + + .privileges, .licence { + display: flex; + flex-wrap: wrap; + gap: .5rem; + margin-block: .5rem; + margin-bottom: 1rem; + } + + .privileges > div, .licence > div { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: .5rem; + + div, a { + background-color: #e9e9e9; + border-radius: 9999px; + padding-inline: .5rem; + color: var(--color-text); + } + } + + .features-matrix { + + ul { + border: 1px solid var(--borders-color); + border-radius: 16px; + padding-inline: 1rem; + + li { + padding: .5rem; + line-height: 1.6; + list-style-position: inside; + list-style-image: url('/assets/cross_unsupported.svg'); + + &.supported { + list-style-image: url('/assets/tick_supported.svg'); + } + + & + li { + border-top: 1px solid #d2d2d2; + } + } + } + } +} diff --git a/sass/_projects.scss b/sass/_projects.scss index 18af532e0..1ef2dd81a 100644 --- a/sass/_projects.scss +++ b/sass/_projects.scss @@ -161,6 +161,7 @@ font-size: 1rem; font-weight: 400; max-width: fit-content; + line-height: 1.6; &.stable { background-color: #DFF6D5; diff --git a/sass/style.scss b/sass/style.scss index a54a2de05..a0641b1f4 100644 --- a/sass/style.scss +++ b/sass/style.scss @@ -9,6 +9,7 @@ @import '_taxonomies'; @import '_projects'; @import '_clients'; +@import '_bridges'; @import '_servers'; @import '_otwsu'; @import '_guardians'; diff --git a/static/assets/cross_unsupported.svg b/static/assets/cross_unsupported.svg new file mode 100644 index 000000000..a6e01c1ac --- /dev/null +++ b/static/assets/cross_unsupported.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/assets/documentation.svg b/static/assets/documentation.svg new file mode 100644 index 000000000..e5bb09738 --- /dev/null +++ b/static/assets/documentation.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/assets/repository.svg b/static/assets/repository.svg new file mode 100644 index 000000000..41e018402 --- /dev/null +++ b/static/assets/repository.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/assets/support.svg b/static/assets/support.svg new file mode 100644 index 000000000..17b86826d --- /dev/null +++ b/static/assets/support.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/assets/tick_supported.svg b/static/assets/tick_supported.svg new file mode 100644 index 000000000..3b0ad19cc --- /dev/null +++ b/static/assets/tick_supported.svg @@ -0,0 +1,3 @@ + + + diff --git a/templates/ecosystem/bridge_implementations.html b/templates/ecosystem/bridge_implementations.html new file mode 100644 index 000000000..7573c4020 --- /dev/null +++ b/templates/ecosystem/bridge_implementations.html @@ -0,0 +1,65 @@ +{% extends "section.html" %} +{% block content %} + + +
+ {% set bridges_data = load_data(path=section.path~"bridges.toml") %} + {% for bridge in bridges_data.bridges %} +
+
+ {% if bridge.featured %}{% endif %} +

{{ bridge.name }}{{ bridge.maturity | title }}

+

{{ bridge.summary | markdown | safe }}

+ +
+ Access needed: +
+
{{ section.title }} {{ bridge.privilege.platform }}
+
Matrix {{ bridge.privilege.matrix }}
+
+
+
+ Licence:  + +
+
+
+
    + {% for feature, supported in bridge.supports %} +
  • + {{ feature | replace(from="_", to=" ") | title }} +
  • + {% endfor %} +
+
+
+ {% endfor %} + +
+{% endblock content %} diff --git a/templates/ecosystem/bridges.html b/templates/ecosystem/bridges.html index a2ebada57..65ec32c8e 100644 --- a/templates/ecosystem/bridges.html +++ b/templates/ecosystem/bridges.html @@ -1,15 +1,35 @@ -{% extends "page.html" %} +{% extends "section.html" %} {% block content %} -
+
- {{ page.content | safe }} + {{ section.content | safe }} + +
+ {% for subsection_path in section.subsections %} + {% set subsection = get_section(path=subsection_path) %} + {% set bridges_data = load_data(path=subsection.path~"bridges.toml") %} + + +
+

{{ subsection.title }}

+

+ {% if bridges_data.bridges %} + {{ bridges_data.bridges | length }} bridge{% if bridges_data.bridges | length > 1 %}s{% endif %} + {% else %} + No bridge + {% endif %} +

+
+
+ {% endfor %} +
{% endblock content %}