Initial Commit

This commit is contained in:
Elara 2024-03-08 21:33:25 -08:00
commit bc2fd10798
20 changed files with 492 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/public/

0
.hugo_build.lock Normal file
View File

30
.woodpecker.yml Normal file
View File

@ -0,0 +1,30 @@
labels:
platform: linux/amd64
steps:
build:
image: hugomods/hugo:go-git
commands:
- hugo
- tar czvf site.tar.gz public/
upload:
image: plugins/s3
settings:
endpoint: https://api.minio.elara.ws
path_style: true
bucket: queerdevs
access_key: AkdgUdmzEJBoiYa2
secret_key:
from_secret: minio_secret_key
source: site.tar.gz
target: /
deploy:
image: loq9/drone-nomad
settings:
addr: http://192.168.100.62:4646
template: template.nomad
environment:
- PLUGIN_WATCH_DEPLOYMENT=true
- PLUGIN_WATCH_DEPLOYMENT_TIMEOUT=10m

5
archetypes/default.md Normal file
View File

@ -0,0 +1,5 @@
+++
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
date = {{ .Date }}
draft = true
+++

View File

@ -0,0 +1,16 @@
# -- Site Configuration --
# Refer to the theme docs for more details about each of these parameters.
# https://jpanther.github.io/congo/docs/getting-started/
baseURL = "https://queerdevs.org/"
defaultContentLanguage = "en"
enableRobotsTXT = true
paginate = 10
summaryLength = 0
[outputs]
home = ["HTML", "RSS", "JSON"]
[permalinks]
code = "/:filename"

View File

@ -0,0 +1,63 @@
languageCode = "en"
languageName = "English"
languageDirection = "ltr"
weight = 1
title = "QueerDevs"
# copyright = ""
[params]
dateFormat = "January 2, 2006"
description = "A collection of queer leftist software developers"
# mainSections = ["section1", "section2"]
[params.author]
name = "QueerDevs contributors"
# image = "img/author.jpg"
# headline = "I'm only human"
# bio = "A little bit about you"
# links = [
# { email = "mailto:hello@your_domain.com" },
# { link = "https://link-to-some-website.com/" },
# { amazon = "https://www.amazon.com/hz/wishlist/ls/wishlist-id" },
# { apple = "https://www.apple.com" },
# { blogger = "https://username.blogspot.com/" },
# { codepen = "https://codepen.io/username" },
# { dev = "https://dev.to/username" },
# { discord = "https://discord.gg/invitecode" },
# { dribbble = "https://dribbble.com/username" },
# { facebook = "https://facebook.com/username" },
# { flickr = "https://www.flickr.com/photos/username/" },
# { foursquare = "https://foursquare.com/username" },
# { github = "https://github.com/username" },
# { gitlab = "https://gitlab.com/username" },
# { google = "https://www.google.com/" },
# { google-scholar = "https://scholar.google.com/citations?user=user-id" },
# { hashnode = "https://username.hashnode.dev" },
# { instagram = "https://instagram.com/username" },
# { keybase = "https://keybase.io/username" },
# { kickstarter = "https://www.kickstarter.com/profile/username" },
# { lastfm = "https://lastfm.com/user/username" },
# { linkedin = "https://linkedin.com/in/username" },
# { mastodon = "https://mastodon.instance/@username" },
# { medium = "https://medium.com/username" },
# { mendeley = "https://www.mendeley.com/" },
# { microsoft = "https://www.microsoft.com/" },
# { orcid = "https://orcid.org/userid" },
# { patreon = "https://www.patreon.com/username" },
# { pinterest = "https://pinterest.com/username" },
# { reddit = "https://reddit.com/user/username" },
# { researchgate = "https://www.researchgate.net/profile/username" },
# { slack = "https://workspace.url/team/userid" },
# { snapchat = "https://snapchat.com/add/username" },
# { soundcloud = "https://soundcloud.com/username" },
# { stack-overflow = "https://stackoverflow.com/users/userid/username" },
# { steam = "https://steamcommunity.com/profiles/userid" },
# { telegram = "https://t.me/username" },
# { tiktok = "https://tiktok.com/@username" },
# { tumblr = "https://username.tumblr.com" },
# { twitch = "https://twitch.tv/username" },
# { whatsapp = "https://wa.me/phone-number" },
# { x-twitter = "https://twitter.com/username" },
# { youtube = "https://youtube.com/username" },
# ]

View File

@ -0,0 +1,13 @@
# -- Markup --
# These settings are required for the theme to function.
[goldmark]
[goldmark.renderer]
unsafe = true
[highlight]
noClasses = false
[tableOfContents]
startLevel = 2
endLevel = 4

View File

@ -0,0 +1,47 @@
# -- Main Menu --
# The main menu is displayed in the header at the top of the page.
# Acceptable parameters are name, pageRef, page, url, title, weight.
#
# The simplest menu configuration is to provide:
# name = The name to be displayed for this menu link
# pageRef = The identifier of the page or section to link to
#
# By default the menu is ordered alphabetically. This can be
# overridden by providing a weight value. The menu will then be
# ordered by weight from lowest to highest.
[[main]]
name = "Home"
pageRef = "/"
weight = 10
[[main]]
name = "Blog"
pageRef = "/blog"
weight = 20
[[main]]
identifier = "search"
weight = 30
[main.params]
action = "search"
[[main]]
identifier = "locale"
weight = 40
[main.params]
action = "locale"
# -- Footer Menu --
# The footer menu is displayed at the bottom of the page, just before
# the copyright notice. Configure as per the main menu above.
[[footer]]
name = "Tags"
pageRef = "tags"
weight = 10
[[footer]]
name = "Source Code"
url = "https://gitea.elara.ws/queerdevs/site"
weight = 20

View File

@ -0,0 +1,2 @@
[[imports]]
path = "github.com/jpanther/congo/v2"

View File

@ -0,0 +1,82 @@
# -- Theme Options --
# These options control how the theme functions and allow you to
# customise the display of your website.
#
# Refer to the theme docs for more details about each of these parameters.
# https://jpanther.github.io/congo/docs/configuration/#theme-parameters
colorScheme = "cherry"
defaultAppearance = "dark" # valid options: light or dark
autoSwitchAppearance = true
enableSearch = false
enableCodeCopy = false
enableImageLazyLoading = true
enableImageWebp = true
# robots = ""
fingerprintAlgorithm = "sha256"
[header]
layout = "hybrid" # valid options: basic, hamburger, hybrid, custom
# logo = "img/logo.jpg"
# logoDark = "img/dark-logo.jpg"
showTitle = true
[footer]
showCopyright = true
showThemeAttribution = true
showAppearanceSwitcher = false
showScrollToTop = true
[homepage]
layout = "page" # valid options: page, profile, custom
showRecent = false
recentLimit = 5
[article]
showDate = true
showDateUpdated = false
showAuthor = false
showBreadcrumbs = true
showDraftLabel = true
showEdit = false
editURL = "https://gitea.elara.ws/queerdevs/site/"
editAppendPath = true
showHeadingAnchors = true
showPagination = true
invertPagination = false
showReadingTime = true
showTableOfContents = true
showTaxonomies = true
showWordCount = false
showComments = false
sharingLinks = ["facebook", "twitter", "mastodon", "reddit", "email", "telegram"]
[list]
showBreadcrumbs = false
showSummary = true
showTableOfContents = false
showTaxonomies = true
groupByYear = true
paginationWidth = 1
[sitemap]
excludedKinds = ["taxonomy", "term"]
[taxonomy]
showTermCount = true
[fathomAnalytics]
# site = "ABC12345"
[plausibleAnalytics]
# domain = "blog.yoursite.com"
# event = ""
# script = ""
[verification]
# google = ""
# bing = ""
# pinterest = ""
# yandex = ""

19
content/_index.md Normal file
View File

@ -0,0 +1,19 @@
+++
description = "A group of queer, leftist software developers"
+++
<center>
<h3>Welcome To</h3>
<img src="/img/banner.svg" alt="QueerDevs" width="500">
<p>We're a group of queer, leftist software developers making software for the queer community<br>(and whatever else we find fun :3)</p>
</center>
---
## Our projects
- **Pronouns (WIP)** \
A free and open source federated profile page where users can express their queer identity.
- **ProfileFed** \
A simple, lightweight federation protocol for sites that host user profiles. \
[Learn More &rarr;](https://gitea.elara.ws/queerdevs/profilefed)

3
content/blog/_index.md Normal file
View File

@ -0,0 +1,3 @@
+++
title = "Blog"
+++

View File

@ -0,0 +1,22 @@
+++
title = "Introducing ProfileFed!"
summary = "A simple, lightweight federation protocol for user profiles."
date = "2024-03-08"
tags = ["profilefed", "federation", "pronouns"]
+++
## Introduction
[ProfileFed](https://gitea.elara.ws/queerdevs/profilefed) is a simple, lightweight federation protocol for platforms that host user profiles. It allows platforms to specify any arbitrary data for their profiles, making it very flexible. The entire spec fits within a README file.
## Why?
There are already lots of federation protocols, including standardized ones like ActivityPub, so why build a custom protocol?
If you've ever worked with ActivityPub, you'll know that it's a really complex protocol. It's meant to represent "actors" that can perform "activities". This is great for platforms like Lemmy or Akkoma, which fit nicely within that model, but it's completely overkill for a platform that's simply hosting user profiles, without any activities to be performed.
The [specification](https://www.w3.org/TR/activitypub/) for ActivityPub is a long document that includes lots of stuff that simply isn't needed for mostly static profiles, whereas ProfileFed's entire spec fits inside one [README file](https://gitea.elara.ws/queerdevs/profilefed/src/branch/master/README.md).
## Where will it be used?
We created ProfileFed to use it with our upcoming Pronouns project, which will provide a safe space for queer people to express their identities. We decided to make Pronouns federated, and explored the vast number of already-made federation protocols, but we found that none of them suited our needs. They were either too complex, didn't allow arbitrary data, or just didn't map well to the way our data was structured. ProfileFed aims to be the protocol that we were missing.

View File

@ -0,0 +1,4 @@
+++
# Redirect the Go import tools to the right repo
vanity = "https://gitea.elara.ws/queerdevs/profilefed"
+++

6
content/members.md Normal file
View File

@ -0,0 +1,6 @@
+++
title = "Members"
description = "The members of our group"
showDate = false
+++

5
go.mod Normal file
View File

@ -0,0 +1,5 @@
module queerdevs.org/site
go 1.22.0
require github.com/jpanther/congo/v2 v2.8.0 // indirect

2
go.sum Normal file
View File

@ -0,0 +1,2 @@
github.com/jpanther/congo/v2 v2.8.0 h1:/XkKK/ywD2SgSwjeYxwx7lLXIM7tt9wS5MvUaAnv9u0=
github.com/jpanther/congo/v2 v2.8.0/go.mod h1:1S7DRoO1ZYS4YUdFd1LjTkdyjQwsjFWd8TqSfz3Jd+M=

9
layouts/code/single.html Normal file
View File

@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="go-import" content="queerdevs.org{{substr .RelPermalink 0 -1}} git {{.Params.vanity}}">
<meta name="go-source" content="queerdevs.org{{substr .RelPermalink 0 -1}} {{.Params.vanity}} {{.Params.vanity}}/src/branch/master{/dir} {{.Params.vanity}}/src/branch/master{/dir}/{file}#L{line}">
<meta http-equiv="refresh" content="0; url={{.Params.vanity}}">
</head>
</html>

110
static/img/banner.svg Normal file
View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="210.91531mm"
height="28.114624mm"
viewBox="0 0 210.91531 28.114624"
version="1.1"
id="svg1"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
sodipodi:docname="qdb.svg"
inkscape:export-filename="qdb.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.35595617"
inkscape:cx="390.49752"
inkscape:cy="37.926018"
inkscape:window-width="1067"
inkscape:window-height="1201"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="text2" />
<defs
id="defs1">
<rect
x="94.38559"
y="250.66064"
width="821.10754"
height="448.83597"
id="rect2" />
<rect
x="68.856888"
y="267.06665"
width="696.57684"
height="281.37311"
id="rect1" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-4.2841709,-122.92638)">
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text1"
style="font-weight:500;font-size:66.6667px;font-family:Poppins;-inkscape-font-specification:'Poppins Medium';letter-spacing:0px;white-space:pre;shape-inside:url(#rect1);opacity:0.7;fill:#000000;stroke-width:0.823" />
<g
id="text2"
style="font-weight:500;font-size:140px;font-family:Poppins;-inkscape-font-specification:'Poppins Medium';letter-spacing:0px;white-space:pre;opacity:0.7;stroke-width:0.823"
transform="matrix(0.26458333,0,0,0.26458333,-21.984923,48.60488)"
aria-label="QueerDevs☭">
<path
style="font-weight:normal;font-family:'LT Institute';-inkscape-font-specification:'LT Institute';fill:#ee3124"
d="m 161.30477,337.74016 -14,7.84 11.76,17.64 c -3.5,1.4 -7.42,2.24 -11.62,2.24 -18.34,0 -31.08,-14.84 -31.08,-34.44 0,-19.18 12.74,-34.02 31.08,-34.02 18.34,0 31.08,14.84 31.08,34.02 0,8.68 -2.52,16.38 -6.86,22.26 z m 27.86,41.58 -7.7,-11.48 c 8.96,-9.1 14.14,-21.98 14.14,-36.68 0,-28.28 -19.6,-50.26 -48.16,-50.26 -28.56,0 -48.160004,21.98 -48.160004,50.26 0,28.42 19.600004,50.4 48.160004,50.4 7.7,0 14.7,-1.54 21,-4.48 l 6.72,10.08 z"
id="path1" />
<path
style="font-weight:normal;font-family:'LT Institute';-inkscape-font-specification:'LT Institute';fill:#f57f29"
d="m 270.36468,310.16016 h -15.82 v 40.46 c 0,8.96 -5.6,16.8 -15.4,16.8 -8.82,0 -15.12,-6.3 -15.12,-15.82 v -41.44 h -15.82 v 41.44 c 0,17.92 11.06,29.96 27.02,29.96 9.38,0 15.26,-3.92 19.88,-10.08 l 0.84,0.28 1.4,8.4 h 13.02 z"
id="path2" />
<path
style="font-weight:normal;font-family:'LT Institute';-inkscape-font-specification:'LT Institute';fill:#fff000"
d="m 299.48468,337.74016 c 2.1,-8.12 7.98,-14.56 17.36,-14.56 9.24,0 15.12,6.44 17.22,14.56 z m 51.1,12.04 v -4.62 c 0,-20.44 -13.86,-36.4 -33.74,-36.4 -20.02,0 -33.88,15.96 -33.88,36.4 0,20.44 14.84,36.4 35.98,36.4 11.9,0 21.7,-4.76 27.86,-12.46 l -11.62,-9.24 c -3.5,4.48 -9.1,7.28 -15.96,7.28 -11.9,0 -18.62,-8.12 -20.3,-17.36 z"
id="path3" />
<path
style="font-weight:normal;font-family:'LT Institute';-inkscape-font-specification:'LT Institute';fill:#58b947"
d="m 375.08481,337.74016 c 2.1,-8.12 7.98,-14.56 17.36,-14.56 9.24,0 15.12,6.44 17.22,14.56 z m 51.1,12.04 v -4.62 c 0,-20.44 -13.86,-36.4 -33.74,-36.4 -20.02,0 -33.88,15.96 -33.88,36.4 0,20.44 14.84,36.4 35.98,36.4 11.9,0 21.7,-4.76 27.86,-12.46 l -11.62,-9.24 c -3.5,4.48 -9.1,7.28 -15.96,7.28 -11.9,0 -18.62,-8.12 -20.3,-17.36 z"
id="path4" />
<path
style="font-weight:normal;font-family:'LT Institute';-inkscape-font-specification:'LT Institute';fill:#0054a6"
d="m 478.40494,309.60016 c -2.24,-0.56 -4.48,-0.84 -6.72,-0.84 -8.54,0 -14,3.92 -18.06,10.08 l -0.84,-0.28 -1.4,-8.4 h -13.02 v 70 h 15.82 v -40.46 c 0,-8.96 4.9,-16.8 15.4,-16.8 2.38,0 6.16,0.42 8.82,1.12 z"
id="path5" />
<path
style="font-weight:normal;font-family:'LT Institute';-inkscape-font-specification:'LT Institute';fill:#9f248f"
d="m 491.00497,380.16016 h 33.18 c 29.96,0 48.16,-21.42 48.16,-49 0,-27.58 -18.2,-49 -48.16,-49 h -33.18 z m 16.8,-14.84 v -68.32 h 16.38 c 19.74,0 31.08,14.84 31.08,33.88 0,19.6 -11.34,34.44 -31.08,34.44 z"
id="path6" />
<path
style="font-weight:normal;font-family:'LT Institute';-inkscape-font-specification:'LT Institute';fill:#f498c0"
d="m 597.96493,337.74016 c 2.1,-8.12 7.98,-14.56 17.36,-14.56 9.24,0 15.12,6.44 17.22,14.56 z m 51.1,12.04 v -4.62 c 0,-20.44 -13.86,-36.4 -33.74,-36.4 -20.02,0 -33.88,15.96 -33.88,36.4 0,20.44 14.84,36.4 35.98,36.4 11.9,0 21.7,-4.76 27.86,-12.46 l -11.62,-9.24 c -3.5,4.48 -9.1,7.28 -15.96,7.28 -11.9,0 -18.62,-8.12 -20.3,-17.36 z"
id="path7" />
<path
style="font-weight:normal;font-family:'LT Institute';-inkscape-font-specification:'LT Institute';fill:#7cc0ea"
d="m 653.54509,310.16016 27.16,70 h 16.94 l 27.16,-70 h -17.22 l -18.06,50.68 h -0.7 l -18.06,-50.68 z"
id="path8" />
<path
style="font-weight:normal;font-family:'LT Institute';-inkscape-font-specification:'LT Institute';fill:#895121;fill-opacity:1"
d="m 757.00494,322.62016 c 6.16,0 11.48,2.38 14.84,6.02 l 10.08,-10.64 c -5.46,-5.74 -14.42,-9.24 -24.5,-9.24 -15.4,0 -25.76,8.26 -25.76,21 0,24.5 37.94,18.34 37.94,31.08 0,3.92 -3.64,6.86 -10.5,6.86 -6.86,0 -14.7,-2.94 -19.88,-8.4 l -10.22,11.48 c 6.72,6.72 17.92,10.78 29.12,10.78 15.96,0 27.02,-8.26 27.02,-21.56 0,-24.64 -37.94,-19.18 -37.94,-31.08 0,-3.36 2.94,-6.3 9.8,-6.3 z"
id="path9" />
<path
style="font-weight:normal;font-family:'LT Institute';-inkscape-font-specification:'LT Institute';fill:#ff0000"
d="m 890.00504,380.44016 c 4.06,-0.28 6.44,-3.78 6.44,-6.44 0,-1.54 -0.42,-2.38 -1.26,-3.22 l -14.7,-14.84 c 6.44,-6.02 9.8,-14.84 9.8,-26.6 0,-25.34 -18.2,-42.56 -41.16,-47.18 l -0.56,1.4 c 13.72,7.84 28.14,26.18 28.14,43.68 0,8.12 -2.1,14.42 -6.72,18.48 l -34.44,-34.3 12.46,-12.6 -22.26,-3.64 -21.7,21.42 13.02,13.02 10.22,-10.08 33.46,33.6 c -5.18,2.52 -9.52,3.92 -13.44,3.92 -9.24,0 -16.66,-4.2 -21.7,-12.46 h -4.9 l -6.86,6.72 c -1.68,-2.38 -3.08,-3.64 -4.34,-3.64 -1.12,0 -2.66,1.12 -2.66,2.38 0,1.12 1.12,2.66 3.5,4.48 -0.42,0.28 -15.4,8.96 -15.4,14.98 0,3.5 2.24,6.3 5.74,6.3 3.64,0 8.68,-5.18 15.26,-15.68 1.54,2.24 2.8,3.36 4.34,3.36 1.68,0 2.38,-0.84 2.38,-2.52 0,-0.98 -1.12,-2.38 -3.5,-4.34 l 2.8,-2.66 c 4.62,9.38 15.12,15.96 28.84,15.96 7.98,0 14.98,-1.96 21,-5.74 l 14.84,14.7 c 1.12,0.98 2.24,1.54 3.36,1.54 z"
id="path10" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

53
template.nomad Normal file
View File

@ -0,0 +1,53 @@
job "queerdevs-site" {
region = "global"
datacenters = ["dc1"]
type = "service"
group "queerdevs-site" {
count = 2
network {
port "http" {
to = 8000
}
}
task "webserver" {
driver = "docker"
env {
// Hack to force Nomad to re-deploy the service
// instead of ignoring it
COMMIT_SHA = "${DRONE_COMMIT_SHA}"
}
config {
image = "gitea.elara.ws/elara6331/webserver:latest"
ports = ["http"]
volumes = ["local/site/public:/html:ro"]
}
artifact {
source = "https://api.minio.elara.ws/queerdevs/site.tar.gz"
destination = "local/site"
}
service {
name = "queerdevs-site"
port = "http"
tags = [
"traefik.enable=true",
"traefik.http.middlewares.queerdevs-site.redirectRegex.regex=^https://www\\.queerdevs\\.org",
"traefik.http.middlewares.queerdevs-site.redirectRegex.replacement=https://queerdevs.org",
"traefik.http.middlewares.queerdevs-site.redirectRegex.permanent=true",
"traefik.http.routers.site.rule=Host(`queerdevs.org`) || Host(`www.queerdevs.org`)",
"traefik.http.routers.site.middlewares=queerdevs-site-redir",
"traefik.http.routers.site.tls.certResolver=letsencrypt",
]
}
}
}
}