commit 911843f7ddaabbe9e08ef0af6a8869764fb1a426 Author: root Date: Sat Mar 21 22:54:01 2026 +0100 Initial setup: Quartz builder for dsesch.de diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..a9cbe18 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,21 @@ +name: Build Docker Image + +on: + push: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Login to Gitea Registry + run: | + echo "${{ secrets.GITEA_TOKEN }}" | docker login forge.dsesch.de \ + -u ${{ github.repository_owner }} --password-stdin + + - name: Build and Push + run: | + docker build -t forge.dsesch.de/root/garden-builder:latest . + docker push forge.dsesch.de/root/garden-builder:latest diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5f85a25 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM node:20-alpine + +RUN apk add --no-cache git rsync + +WORKDIR /quartz + +# Quartz klonen und Abhängigkeiten installieren +RUN git clone --depth 1 https://github.com/jackyzha0/quartz.git . && \ + npm ci + +# Unsere Konfiguration überschreibt den Quartz-Standard +COPY quartz.config.ts ./quartz.config.ts + +# Content-Verzeichnis vorbereiten +RUN mkdir -p content diff --git a/quartz.config.ts b/quartz.config.ts new file mode 100644 index 0000000..63bf3e1 --- /dev/null +++ b/quartz.config.ts @@ -0,0 +1,94 @@ +import { QuartzConfig } from "./quartz/cfg" +import * as Plugin from "./quartz/plugins" + +const config: QuartzConfig = { + configuration: { + pageTitle: "dsesch.de", + pageTitleSuffix: "", + enableSPA: true, + enablePopovers: true, + analytics: null, + locale: "de-DE", + baseUrl: "dsesch.de", + ignorePatterns: [ + "private", + "templates", + ".obsidian", + ".git", + "*.canvas", + ], + defaultDateType: "modified", + generateSocialImages: false, + theme: { + fontOrigin: "googleFonts", + cdnCaching: true, + typography: { + header: "Schibsted Grotesk", + body: "Source Sans Pro", + code: "IBM Plex Mono", + }, + colors: { + lightMode: { + light: "#faf8f8", + lightgray: "#e5e5e5", + gray: "#b8b8b8", + darkgray: "#4e4e4e", + dark: "#2b2b2b", + secondary: "#284b63", + tertiary: "#84a98c", + highlight: "rgba(143, 159, 169, 0.15)", + textHighlight: "#fff23688", + }, + darkMode: { + light: "#161618", + lightgray: "#393639", + gray: "#646464", + darkgray: "#d4d4d4", + dark: "#ebebec", + secondary: "#7b97aa", + tertiary: "#84a98c", + highlight: "rgba(143, 159, 169, 0.15)", + textHighlight: "#b3aa0288", + }, + }, + }, + }, + plugins: { + transformers: [ + Plugin.FrontMatter(), + Plugin.CreatedModifiedDate({ + priority: ["frontmatter", "filesystem"], + }), + Plugin.SyntaxHighlighting({ + theme: { + light: "github-light", + dark: "github-dark", + }, + keepBackground: false, + }), + Plugin.ObsidianFlavoredMarkdown({ enableInHtmlEmbed: false }), + Plugin.GitHubFlavoredMarkdown(), + Plugin.TableOfContents(), + Plugin.CrawlLinks({ markdownLinkResolution: "shortest" }), + Plugin.Description(), + Plugin.Latex({ renderEngine: "katex" }), + ], + filters: [Plugin.ExplicitPublish()], + emitters: [ + Plugin.AliasRedirects(), + Plugin.ComponentResources(), + Plugin.ContentPage(), + Plugin.FolderPage(), + Plugin.TagPage(), + Plugin.ContentIndex({ + enableSiteMap: true, + enableRSS: true, + }), + Plugin.Assets(), + Plugin.Static(), + Plugin.NotFoundPage(), + ], + }, +} + +export default config