commit bc2fd10798589efd5d310a174b171a0cc45c6b48 Author: Elara6331 Date: Fri Mar 8 21:33:25 2024 -0800 Initial Commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..87174b6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/public/ diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..0d67708 --- /dev/null +++ b/.woodpecker.yml @@ -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 diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..c6f3fce --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,5 @@ ++++ +title = '{{ replace .File.ContentBaseName "-" " " | title }}' +date = {{ .Date }} +draft = true ++++ diff --git a/config/_default/config.toml b/config/_default/config.toml new file mode 100644 index 0000000..c502d6d --- /dev/null +++ b/config/_default/config.toml @@ -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" diff --git a/config/_default/languages.en.toml b/config/_default/languages.en.toml new file mode 100644 index 0000000..26b73c5 --- /dev/null +++ b/config/_default/languages.en.toml @@ -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" }, + # ] diff --git a/config/_default/markup.toml b/config/_default/markup.toml new file mode 100644 index 0000000..c5449fc --- /dev/null +++ b/config/_default/markup.toml @@ -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 diff --git a/config/_default/menus.en.toml b/config/_default/menus.en.toml new file mode 100644 index 0000000..5c2cc09 --- /dev/null +++ b/config/_default/menus.en.toml @@ -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 diff --git a/config/_default/module.toml b/config/_default/module.toml new file mode 100644 index 0000000..6dbe8e3 --- /dev/null +++ b/config/_default/module.toml @@ -0,0 +1,2 @@ +[[imports]] + path = "github.com/jpanther/congo/v2" diff --git a/config/_default/params.toml b/config/_default/params.toml new file mode 100644 index 0000000..364f99d --- /dev/null +++ b/config/_default/params.toml @@ -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 = "" diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..cf34ae2 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,19 @@ ++++ +description = "A group of queer, leftist software developers" ++++ + +
+

Welcome To

+ QueerDevs +

We're a group of queer, leftist software developers making software for the queer community
(and whatever else we find fun :3)

+
+ +--- + +## 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 →](https://gitea.elara.ws/queerdevs/profilefed) diff --git a/content/blog/_index.md b/content/blog/_index.md new file mode 100644 index 0000000..34651ab --- /dev/null +++ b/content/blog/_index.md @@ -0,0 +1,3 @@ ++++ +title = "Blog" ++++ diff --git a/content/blog/profilefed.md b/content/blog/profilefed.md new file mode 100644 index 0000000..e7623eb --- /dev/null +++ b/content/blog/profilefed.md @@ -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. diff --git a/content/code/profilefed.md b/content/code/profilefed.md new file mode 100644 index 0000000..e933176 --- /dev/null +++ b/content/code/profilefed.md @@ -0,0 +1,4 @@ ++++ +# Redirect the Go import tools to the right repo +vanity = "https://gitea.elara.ws/queerdevs/profilefed" ++++ diff --git a/content/members.md b/content/members.md new file mode 100644 index 0000000..e2d3b32 --- /dev/null +++ b/content/members.md @@ -0,0 +1,6 @@ ++++ +title = "Members" +description = "The members of our group" +showDate = false ++++ + diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..c98dff0 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module queerdevs.org/site + +go 1.22.0 + +require github.com/jpanther/congo/v2 v2.8.0 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..fa8bafb --- /dev/null +++ b/go.sum @@ -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= diff --git a/layouts/code/single.html b/layouts/code/single.html new file mode 100644 index 0000000..06a17d3 --- /dev/null +++ b/layouts/code/single.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/banner.svg b/static/img/banner.svg new file mode 100644 index 0000000..c0c914f --- /dev/null +++ b/static/img/banner.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/template.nomad b/template.nomad new file mode 100644 index 0000000..d623492 --- /dev/null +++ b/template.nomad @@ -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", + ] + } + } + } +}