From 42383743a95ba9f671a6fcb35689429ce507579c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20B=C3=A4dorf?= Date: Sun, 2 Oct 2022 20:46:42 +0200 Subject: [PATCH] Basic lume setup --- .gitignore | 1 + _config.ts | 29 ++++++++++ _data/cssCacheBust.yml | 1 + _data/people/avd.yml | 13 +++++ _data/people/byb.yml | 17 ++++++ _data/people/cmp.yml | 7 +++ _data/people/hmd.yml | 7 +++ _data/people/hsg.yml | 7 +++ _data/people/jfw.yml | 12 ++++ _data/people/jjg.yml | 7 +++ _data/thingsWeAre.yml | 5 ++ _includes/Background.tsx | 17 ++++++ _includes/DefaultLayout.tsx | 66 +++++++++++++++++++++ _includes/Head.tsx | 20 +++++++ _includes/Logo.tsx | 11 ++++ _includes/layouts/default.tsx | 61 ++++++++++++++++++++ _includes/layouts/homepage.tsx | 39 +++++++++++++ about.yml | 79 ++++++++++++++++++++++++++ build.sh | 5 ++ deno.json | 12 ++++ filters.ts | 40 +++++++++++++ import_map.json | 7 +++ index.yml | 19 +++++++ background.js => scripts/background.js | 1 - shell.nix | 15 +++-- style.css | 2 +- 26 files changed, 493 insertions(+), 7 deletions(-) create mode 100644 _config.ts create mode 100644 _data/cssCacheBust.yml create mode 100644 _data/people/avd.yml create mode 100644 _data/people/byb.yml create mode 100644 _data/people/cmp.yml create mode 100644 _data/people/hmd.yml create mode 100644 _data/people/hsg.yml create mode 100644 _data/people/jfw.yml create mode 100644 _data/people/jjg.yml create mode 100644 _data/thingsWeAre.yml create mode 100644 _includes/Background.tsx create mode 100644 _includes/DefaultLayout.tsx create mode 100644 _includes/Head.tsx create mode 100644 _includes/Logo.tsx create mode 100644 _includes/layouts/default.tsx create mode 100644 _includes/layouts/homepage.tsx create mode 100644 about.yml create mode 100755 build.sh create mode 100644 deno.json create mode 100644 filters.ts create mode 100644 import_map.json create mode 100644 index.yml rename background.js => scripts/background.js (78%) diff --git a/.gitignore b/.gitignore index e4eaed1..a977291 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ tags .direnv +_site diff --git a/_config.ts b/_config.ts new file mode 100644 index 0000000..a25244a --- /dev/null +++ b/_config.ts @@ -0,0 +1,29 @@ +import lume from "https:/deno.land/x/lume/mod.ts"; +import sass from "https:/deno.land/x/lume/plugins/sass.ts"; +import date from "https:/deno.land/x/lume/plugins/date.ts"; +import jsx from "https:/deno.land/x/lume/plugins/jsx.ts"; +import terser from "https:/deno.land/x/lume/plugins/terser.ts"; +import postcss from "https:/deno.land/x/lume/plugins/postcss.ts"; + +const site = lume(); + +site.use(sass()); +site.use(date()); +site.use(jsx()); +site.use(terser()); +site.use(postcss()); + +site.loadAssets([ + ".png", + ".jpg", + ".svg", + ".pdf", + ".woff2", + ".woff", + ".ttf", + ".otf", + ".js", + ".txt", +]); + +export default site; diff --git a/_data/cssCacheBust.yml b/_data/cssCacheBust.yml new file mode 100644 index 0000000..eb3ed17 --- /dev/null +++ b/_data/cssCacheBust.yml @@ -0,0 +1 @@ +'?v=1' diff --git a/_data/people/avd.yml b/_data/people/avd.yml new file mode 100644 index 0000000..a1a2caa --- /dev/null +++ b/_data/people/avd.yml @@ -0,0 +1,13 @@ +name: Alexander von Dombois +pronouns: he/him +role: Product Design +contactOptions: + - name: mail + value: avd@miom.space + link: 'mailto:avd@miom.space' + - name: insta + value: '@alexandervondombois' + - name: web + value: alexandervondombois.de + link: 'https://alexandervondombois.de' + diff --git a/_data/people/byb.yml b/_data/people/byb.yml new file mode 100644 index 0000000..1e0ea00 --- /dev/null +++ b/_data/people/byb.yml @@ -0,0 +1,17 @@ +name: Benjamin Bädorf +pronouns: he/him +role: Software Engineer +contactOptions: + - name: mail + value: byb@miom.space + link: 'mailto:byb@miom.space' + - name: git + value: '@b12f' + link: 'git.b12f.io/b12f' + - name: gpg + value: 4332 E0D0 2B21 4D31 376C 366E 4406 E80E 13CD 656C + - name: matrix + value: '@b12f:pub.solar' + - name: web + value: benjaminbaedorf.eu + link: 'https://benjaminbaedorf.eu' diff --git a/_data/people/cmp.yml b/_data/people/cmp.yml new file mode 100644 index 0000000..4575eae --- /dev/null +++ b/_data/people/cmp.yml @@ -0,0 +1,7 @@ +name: Constantin Pannwitz +pronouns: he/him +role: Product Designer +contactOptions: + - name: mail + value: cmp@miom.space + link: 'mailto:cmp@miom.space' diff --git a/_data/people/hmd.yml b/_data/people/hmd.yml new file mode 100644 index 0000000..964d313 --- /dev/null +++ b/_data/people/hmd.yml @@ -0,0 +1,7 @@ +name: Hanna Deuss +pronouns: she/her +role: Visual Artist +contactOptions: + - name: mail + value: hmd@miom.space + link: 'mailto:hmd@miom.space' diff --git a/_data/people/hsg.yml b/_data/people/hsg.yml new file mode 100644 index 0000000..1560aed --- /dev/null +++ b/_data/people/hsg.yml @@ -0,0 +1,7 @@ +name: Helena Geisler +pronouns: she/her +role: Artist, Writer, Scientist +contactOptions: + - name: mail + value: hsg@miom.space + link: 'mailto:hsg@miom.space' diff --git a/_data/people/jfw.yml b/_data/people/jfw.yml new file mode 100644 index 0000000..19e2cab --- /dev/null +++ b/_data/people/jfw.yml @@ -0,0 +1,12 @@ +name: Jhonas Wernery +pronouns: he/him +role: System Engineer +contactOptions: + - name: mail + value: jfw@miom.space + link: 'mailto:jfw@miom.space' + - name: git + value: '@teutat3s' + link: 'https://git.b12f.io/teutat3s' + - name: matrix + value: '@teutat3s:pub.solar' diff --git a/_data/people/jjg.yml b/_data/people/jjg.yml new file mode 100644 index 0000000..7bc962c --- /dev/null +++ b/_data/people/jjg.yml @@ -0,0 +1,7 @@ +name: Julian Gerullis +pronouns: he/him +role: Product Designer +contactOptions: + - name: mail + value: jjg@miom.space + link: 'mailto:jjg@miom.space' diff --git a/_data/thingsWeAre.yml b/_data/thingsWeAre.yml new file mode 100644 index 0000000..21e1430 --- /dev/null +++ b/_data/thingsWeAre.yml @@ -0,0 +1,5 @@ +- 'an off' +- 'a studio' +- 'an art' +- 'a tech' +- 'a people' diff --git a/_includes/Background.tsx b/_includes/Background.tsx new file mode 100644 index 0000000..daba45b --- /dev/null +++ b/_includes/Background.tsx @@ -0,0 +1,17 @@ +import Logo from './Logo.tsx'; + +const x1312 = (new Array(400)).fill("0x1312").join(" "); +export default () =>
+ +
{x1312}
+ +
; diff --git a/_includes/DefaultLayout.tsx b/_includes/DefaultLayout.tsx new file mode 100644 index 0000000..df01a82 --- /dev/null +++ b/_includes/DefaultLayout.tsx @@ -0,0 +1,66 @@ +import { + title as titleFilter, + en, + de, + md, +} from '../../filters.ts'; +import Background from '../../components/Background.tsx'; + +export default ({ title, theme, extraStylesheets, content, cssCacheBust }) => <> + + + + { titleFilter(title) } + + + + + + + + + + + <> + {(extraStylesheets || []) + .map(extraStylesheet => )} + + + + +
+
+ Deutsche übersetzung unten + +
+
+ +
+ English translation above + +
+
+
+ + +; diff --git a/_includes/Head.tsx b/_includes/Head.tsx new file mode 100644 index 0000000..c79bcb3 --- /dev/null +++ b/_includes/Head.tsx @@ -0,0 +1,20 @@ +import { title as titleFilter } from '../filters.ts'; + +export default ({ title, theme, extraStylesheets }) => + + { titleFilter(title) } + + + + + + + + + + + <> + {(extraStylesheets || []) + .map(extraStylesheet => )} + +; diff --git a/_includes/Logo.tsx b/_includes/Logo.tsx new file mode 100644 index 0000000..5d396e0 --- /dev/null +++ b/_includes/Logo.tsx @@ -0,0 +1,11 @@ +export default () => ; diff --git a/_includes/layouts/default.tsx b/_includes/layouts/default.tsx new file mode 100644 index 0000000..15ab51b --- /dev/null +++ b/_includes/layouts/default.tsx @@ -0,0 +1,61 @@ +import { + title as titleFilter, + en, + de, + md, +} from '../../filters.ts'; +import Head from '../Head.tsx'; +import Background from '../Background.tsx'; + +export default ({ + title, + theme, + extraStylesheets, + content, + cssCacheBust, +}) => <> + + + + +
+
+ Deutsche übersetzung unten + +
+
+ +
+ English translation above + +
+
+
+ + +; diff --git a/_includes/layouts/homepage.tsx b/_includes/layouts/homepage.tsx new file mode 100644 index 0000000..c92230e --- /dev/null +++ b/_includes/layouts/homepage.tsx @@ -0,0 +1,39 @@ +import { + title as titleFilter, + en, + de, + md, +} from '../../filters.ts'; +import Head from '../Head.tsx'; +import Background from '../Background.tsx'; + +export default ({ + title, + theme, + extraStylesheets, + links, + cssCacheBust, +}) => <> + + + + +
+ {links.map(({ href, title }) => + {title} + )} + +
+ + +; diff --git a/about.yml b/about.yml new file mode 100644 index 0000000..c9fd141 --- /dev/null +++ b/about.yml @@ -0,0 +1,79 @@ +layout: layouts/default.tsx + +content: + en: | + # Hi! We're pub.solar + + We are a non-registered association seated in Cologne, Germany. Our goal is to enable more people to use free software, have secure digital communications, and to take control over their private data. We offer free software for you and all the people you love. We do this transparently and democratically. + + We currently have four larger projects: + + * [Matrix](https://chat.pub.solar): a decentralized, end-to-end encrypted chat, similar to Slack or Discord. + * [Mastodon](https://mastodon.pub.solar): a decentralized microblogging platform, similar to Twitter. + * [Nextcloud](https://cloud.pub.solar): a cloud with office capabilities, similar to the Google Suite and Microsoft Office 365. + * [PubSolarOS](https://get.pub.solar): a GNU+Linux Distribution that is based on NixOS. + + Our Mastodon and Matrix instances are publicly open for registration. If you (or your non profit, or your family) would like to use our Nextcloud, send us a message. + + You can reach us via [#General in Matrix](https://matrix.to/#/#general:pub.solar?via=chat.pub.solar) and [@crew on Mastodon](https://mastodon.pub.solar/@crew), or send a mail to [crew@pub.solar](mailto:crew@pub.solar). + + ## Imprint + + pub.solar n.e.V. + Benjamin Bädorf, Jhonas Wernery, Hendrik Sokolowki + c/o MiOM 202, + Wilhelm-Mauser-Straße 47 Halle 5, + D-50827 Köln, + [crew@pub.solar](mailto:crew@pub.solar) + + ## Our Statutes + + Are over [here](https://cloud.pub.solar/s/2KErtaYeLn5d6MZ). + + ## Our Privacy Policy + + Is over [here](https://pub.solar/privacy). + + ## Our hosting + + Our friends at Greenbaum Cloud (Jhonas works there) are kindly providing us their infrastructure for hosting without charging us. Give them a visit. + [] + + + de: | + # Hi! Wir sind pub.solar + + Wir sind ein nicht eingetragener Verein mit Sitz in Köln. Unser Ziel ist es mehr Menschen zu ermöglichen, Freie Software zu benutzen, sicher digital zu kommunizieren, und datensparsamer zu leben. Wir stellen für Dich und alle Menschen die Du lieb hast auf transparente und demokratische Weise Freie Software zur Verfügung. + + Momentan haben wir vier größere Projekte: + + * [Matrix](https://chat.pub.solar): dezentraler, Ende-zu-Ende verschlüsselter Chat, ähnlich wie Slack oder Discord + * [Mastodon](https://mastodon.pub.solar): dezentrale Mikrobloggingplattform, ähnlich wie Twitter + * [Nextcloud](https://cloud.pub.solar): Cloud mit Office Möglichkeiten, ähnlich wie Teile der Google Suite und Microsoft Office 365 + * [PubSolarOS](https://get.pub.solar), eine Linux Distribution die auf NixOS basiert + + Auf unseren Mastodon und Matrix Instanzen ist die Registrierung für alle offen. Wenn Du (oder dein Verein, oder deine Familie) gerne unsere Nextcloud benutzen möchten, schreib uns gerne an. + + Du kannst uns via [#General in Matrix](https://matrix.to/#/#general:pub.solar?via=chat.pub.solar) und [@crew auf Mastodon](https://mastodon.pub.solar/@crew) erreichen, oder eine Mail an [crew@pub.solar](mailto:crew@pub.solar) schicken. + + ## Impressum + + pub.solar n.e.V. + Benjamin Bädorf, Jhonas Wernery, Hendrik Sokolowki + c/o MiOM 202, + Wilhelm-Mauser-Straße 47 Halle 5, + D-50827 Köln, + [crew@pub.solar](mailto:crew@pub.solar) + + ### Unsere Satzung + + Findest Du [hier](https://cloud.pub.solar/s/2KErtaYeLn5d6MZ). + + ## Unsere Datenschutzerklärung + Findest Du [hier](https://pub.solar/privacy). + + ## Unser Hosting + + Unsere Freunde bei der Firma Greenbaum Cloud (Jhonas arbeitet dort auch) sind so cool uns ihre Infrastruktur momentan gratis zur Verfügung zu stellen. Klickt gerne mal rein. + + diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..ba3af75 --- /dev/null +++ b/build.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +lume +cp -r ./fonts ./_site/ +rm -rf ./_site/README diff --git a/deno.json b/deno.json new file mode 100644 index 0000000..fd42807 --- /dev/null +++ b/deno.json @@ -0,0 +1,12 @@ +{ + "importMap": "import_map.json", + "tasks": { + "lume": "deno eval \"import 'lume/task.ts'\" --", + "build": "deno task lume", + "serve": "deno task lume -s" + }, + "compilerOptions": { + "jsx": "react-jsx", + "jsxImportSource": "react" + } +} diff --git a/filters.ts b/filters.ts new file mode 100644 index 0000000..ac0b9eb --- /dev/null +++ b/filters.ts @@ -0,0 +1,40 @@ +import MarkdownIt from "https://jspm.dev/markdown-it"; + +const mdIt = new MarkdownIt({ + html: false, // Enable HTML tags in source + xhtmlOut: false, // Use '/' to close single tags (
). + // This is only for full CommonMark compatibility. + breaks: true, // Convert '\n' in paragraphs into
+ langPrefix: 'language-', // CSS language prefix for fenced blocks. Can be + // useful for external highlighters. + linkify: true, // Autoconvert URL-like text to links + + // Enable some language-neutral replacement + quotes beautification + // For the full list of replacements, see https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js + typographer: false, + + // Double + single quotes replacement pairs, when typographer enabled, + // and smartquotes on. Could be either a String or an Array. + // + // For example, you can use '«»„“' for Russian, '„“‚‘' for German, + // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp). + quotes: '“”‘’', + + // Highlighter function. Should return escaped HTML, + // or '' if the source string is not changed and should be escaped externally. + // If result starts with mdIt.render(string); + +export const title = (value = '') => value + (value ? " | " : "") + "pub.solar"; + +export const i18n = (value) => value.en; + +export const de = (value) => value.de; + +export const objectToArray = (value = {}) => Object.keys(value) + .sort() + .map(key => value[key]) + .filter(val => !!val); diff --git a/import_map.json b/import_map.json new file mode 100644 index 0000000..5029957 --- /dev/null +++ b/import_map.json @@ -0,0 +1,7 @@ +{ + "imports": { + "lume/": "https://deno.land/x/lume@v1.11.4/", + "react/jsx-runtime": "https://deno.land/x/lume@v1.11.4/deps/react_runtime.ts", + "react": "https://deno.land/x/lume@v1.11.4/deps/react.ts" + } +} diff --git a/index.yml b/index.yml new file mode 100644 index 0000000..7567649 --- /dev/null +++ b/index.yml @@ -0,0 +1,19 @@ +layout: layouts/homepage.tsx + +links: + - href: https://en.wikipedia.org/wiki/Free_software + title: Fucking Free + - href: https://pub.solar/os/ + title: PubSolarOS + - href: https://chat.pub.solar/ + title: Matrix + - href: https://mastodon.pub.solar/ + title: Mastodon + - href: https://cloud.pub.solar/ + title: Nextcloud + - href: ./hakken + title: hakken.irl + - href: ./about + title: About & Imprint + - href: ./privacy + title: Privacy policy diff --git a/background.js b/scripts/background.js similarity index 78% rename from background.js rename to scripts/background.js index 2a43463..6c66dd5 100644 --- a/background.js +++ b/scripts/background.js @@ -1,4 +1,3 @@ -document.getElementById('x1312').innerHTML = (new Array(400)).fill("0x1312").join(" "); const background = document.getElementById("background"); const logo = document.getElementById("logo").cloneNode(true); logo.id = ""; diff --git a/shell.nix b/shell.nix index 16fcb66..fecb5b2 100644 --- a/shell.nix +++ b/shell.nix @@ -1,8 +1,13 @@ -{ pkgs ? import {} }: - -pkgs.mkShell { +with (import (fetchTarball https://github.com/nixos/nixpkgs/archive/nixpkgs-unstable.tar.gz) {}); +mkShell { buildInputs = [ - pkgs.nodejs - pkgs.nodePackages.serve + nodejs + deno + nodePackages.json + nodePackages.triton ]; + + shellHook = '' + eval "$(triton env --triton)" + ''; } diff --git a/style.css b/style.css index edf442e..bd5a50a 100644 --- a/style.css +++ b/style.css @@ -219,7 +219,7 @@ html { .ps-background--logo { width: calc(100vw / 9); - // height: 4rem; + height: 4rem; margin: 0.1rem; }