From 940882ae761c31e02ac5f31d14e49eda47e49f1b Mon Sep 17 00:00:00 2001
From: D-u-c-k-s-e-l <98615937+D-u-c-k-s-e-l@users.noreply.github.com>
Date: Wed, 16 Jul 2025 01:13:12 -0500
Subject: [PATCH] initial commit?
---
.gitignore | 5 +
.vscode/settings.json | 5 +
README.md | 15 ++
website/.vscode/settings.json | 5 +
website/Gemfile | 33 +++
website/Gemfile.lock | 175 +++++++++++++++
website/_config.yml | 45 ++++
website/_data/nav.yml | 14 ++
website/_includes/sidenav.html | 9 +
website/_includes/toc.html | 189 ++++++++++++++++
website/_layouts/default.html | 123 +++++++++++
website/articles/_announce/2025-07-16-test.md | 7 +
website/articles/_news/2025-07-16-test.md | 7 +
website/articles/announce_feed.xml | 25 +++
website/articles/news_feed.xml | 25 +++
website/assets/css/main.css | 204 ++++++++++++++++++
website/assets/img/icon.png | Bin 0 -> 2248 bytes
website/assets/img/molly.png | Bin 0 -> 10233 bytes
website/assets/themes/colors.css | 26 +++
website/index.md | 7 +
website/register.md | 60 ++++++
21 files changed, 979 insertions(+)
create mode 100644 .gitignore
create mode 100644 .vscode/settings.json
create mode 100644 README.md
create mode 100644 website/.vscode/settings.json
create mode 100644 website/Gemfile
create mode 100644 website/Gemfile.lock
create mode 100644 website/_config.yml
create mode 100644 website/_data/nav.yml
create mode 100644 website/_includes/sidenav.html
create mode 100644 website/_includes/toc.html
create mode 100644 website/_layouts/default.html
create mode 100644 website/articles/_announce/2025-07-16-test.md
create mode 100644 website/articles/_news/2025-07-16-test.md
create mode 100644 website/articles/announce_feed.xml
create mode 100644 website/articles/news_feed.xml
create mode 100644 website/assets/css/main.css
create mode 100644 website/assets/img/icon.png
create mode 100644 website/assets/img/molly.png
create mode 100644 website/assets/themes/colors.css
create mode 100644 website/index.md
create mode 100644 website/register.md
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f40fbd8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+_site
+.sass-cache
+.jekyll-cache
+.jekyll-metadata
+vendor
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..2d43828
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+ "cSpell.words": [
+ "Linuxposting"
+ ]
+}
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3ae0a2a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,15 @@
+# Website
+
+
+## notes to maintainers
+
+- articles and announcements are formatted YYYY-MM-DD-title.md or .html and go in articles/_folders
+- feed.xml should be disabled later
+- sidenav is in _include/sidenav.html
+- sidenav options are in _data/nav.yml
+- nothing works, it just pretends to.
+
+## Notes about molly
+
+- f yeah linux is cool but wrong vibe. we need an official banner.
+- she needs to be Konqied
\ No newline at end of file
diff --git a/website/.vscode/settings.json b/website/.vscode/settings.json
new file mode 100644
index 0000000..eef17a2
--- /dev/null
+++ b/website/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+ "cSpell.words": [
+ "linuxposting"
+ ]
+}
\ No newline at end of file
diff --git a/website/Gemfile b/website/Gemfile
new file mode 100644
index 0000000..395750a
--- /dev/null
+++ b/website/Gemfile
@@ -0,0 +1,33 @@
+source "https://rubygems.org"
+# Hello! This is where you manage which Jekyll version is used to run.
+# When you want to use a different version, change it below, save the
+# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
+#
+# bundle exec jekyll serve
+#
+# This will help ensure the proper Jekyll version is running.
+# Happy Jekylling!
+gem "jekyll", "~> 4.4.1"
+# This is the default theme for new Jekyll sites. You may change this to anything you like.
+gem "minima", "~> 2.5"
+# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
+# uncomment the line below. To upgrade, run `bundle update github-pages`.
+# gem "github-pages", group: :jekyll_plugins
+# If you have any plugins, put them here!
+group :jekyll_plugins do
+ gem "jekyll-feed", "~> 0.12"
+end
+
+# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
+# and associated library.
+platforms :mingw, :x64_mingw, :mswin, :jruby do
+ gem "tzinfo", ">= 1", "< 3"
+ gem "tzinfo-data"
+end
+
+# Performance-booster for watching directories on Windows
+gem "wdm", "~> 0.1", :platforms => [:mingw, :x64_mingw, :mswin]
+
+# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
+# do not have a Java counterpart.
+gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
diff --git a/website/Gemfile.lock b/website/Gemfile.lock
new file mode 100644
index 0000000..a29020b
--- /dev/null
+++ b/website/Gemfile.lock
@@ -0,0 +1,175 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
+ base64 (0.3.0)
+ bigdecimal (3.2.2)
+ colorator (1.1.0)
+ concurrent-ruby (1.3.5)
+ csv (3.3.5)
+ em-websocket (0.5.3)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0)
+ eventmachine (1.2.7)
+ ffi (1.17.2)
+ ffi (1.17.2-aarch64-linux-gnu)
+ ffi (1.17.2-aarch64-linux-musl)
+ ffi (1.17.2-arm-linux-gnu)
+ ffi (1.17.2-arm-linux-musl)
+ ffi (1.17.2-arm64-darwin)
+ ffi (1.17.2-x86-linux-gnu)
+ ffi (1.17.2-x86-linux-musl)
+ ffi (1.17.2-x86_64-darwin)
+ ffi (1.17.2-x86_64-linux-gnu)
+ ffi (1.17.2-x86_64-linux-musl)
+ forwardable-extended (2.6.0)
+ google-protobuf (4.31.1)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.1-aarch64-linux-gnu)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.1-aarch64-linux-musl)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.1-arm64-darwin)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.1-x86-linux-gnu)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.1-x86-linux-musl)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.1-x86_64-darwin)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.1-x86_64-linux-gnu)
+ bigdecimal
+ rake (>= 13)
+ google-protobuf (4.31.1-x86_64-linux-musl)
+ bigdecimal
+ rake (>= 13)
+ http_parser.rb (0.8.0)
+ i18n (1.14.7)
+ concurrent-ruby (~> 1.0)
+ jekyll (4.4.1)
+ addressable (~> 2.4)
+ base64 (~> 0.2)
+ colorator (~> 1.0)
+ csv (~> 3.0)
+ em-websocket (~> 0.5)
+ i18n (~> 1.0)
+ jekyll-sass-converter (>= 2.0, < 4.0)
+ jekyll-watch (~> 2.0)
+ json (~> 2.6)
+ kramdown (~> 2.3, >= 2.3.1)
+ kramdown-parser-gfm (~> 1.0)
+ liquid (~> 4.0)
+ mercenary (~> 0.3, >= 0.3.6)
+ pathutil (~> 0.9)
+ rouge (>= 3.0, < 5.0)
+ safe_yaml (~> 1.0)
+ terminal-table (>= 1.8, < 4.0)
+ webrick (~> 1.7)
+ jekyll-feed (0.17.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-sass-converter (3.1.0)
+ sass-embedded (~> 1.75)
+ jekyll-seo-tag (2.8.0)
+ jekyll (>= 3.8, < 5.0)
+ jekyll-watch (2.2.1)
+ listen (~> 3.0)
+ json (2.12.2)
+ kramdown (2.5.1)
+ rexml (>= 3.3.9)
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ liquid (4.0.4)
+ listen (3.9.0)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ mercenary (0.4.0)
+ minima (2.5.2)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-feed (~> 0.9)
+ jekyll-seo-tag (~> 2.1)
+ pathutil (0.16.2)
+ forwardable-extended (~> 2.6)
+ public_suffix (6.0.2)
+ rake (13.3.0)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.11.1)
+ ffi (~> 1.0)
+ rexml (3.4.1)
+ rouge (4.5.2)
+ safe_yaml (1.0.5)
+ sass-embedded (1.89.2)
+ google-protobuf (~> 4.31)
+ rake (>= 13)
+ sass-embedded (1.89.2-aarch64-linux-android)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-aarch64-linux-gnu)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-aarch64-linux-musl)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-arm-linux-androideabi)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-arm-linux-gnueabihf)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-arm-linux-musleabihf)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-arm64-darwin)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-riscv64-linux-android)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-riscv64-linux-gnu)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-riscv64-linux-musl)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-x86_64-darwin)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-x86_64-linux-android)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-x86_64-linux-gnu)
+ google-protobuf (~> 4.31)
+ sass-embedded (1.89.2-x86_64-linux-musl)
+ google-protobuf (~> 4.31)
+ terminal-table (3.0.2)
+ unicode-display_width (>= 1.1.1, < 3)
+ unicode-display_width (2.6.0)
+ webrick (1.9.1)
+
+PLATFORMS
+ aarch64-linux-android
+ aarch64-linux-gnu
+ aarch64-linux-musl
+ arm-linux-androideabi
+ arm-linux-gnu
+ arm-linux-gnueabihf
+ arm-linux-musl
+ arm-linux-musleabihf
+ arm64-darwin
+ riscv64-linux-android
+ riscv64-linux-gnu
+ riscv64-linux-musl
+ ruby
+ x86-linux-gnu
+ x86-linux-musl
+ x86_64-darwin
+ x86_64-linux-android
+ x86_64-linux-gnu
+ x86_64-linux-musl
+
+DEPENDENCIES
+ http_parser.rb (~> 0.6.0)
+ jekyll (~> 4.4.1)
+ jekyll-feed (~> 0.12)
+ minima (~> 2.5)
+ tzinfo (>= 1, < 3)
+ tzinfo-data
+ wdm (~> 0.1)
+
+BUNDLED WITH
+ 2.6.9
diff --git a/website/_config.yml b/website/_config.yml
new file mode 100644
index 0000000..3bde1ac
--- /dev/null
+++ b/website/_config.yml
@@ -0,0 +1,45 @@
+
+title: linuxposting.xyz
+description: >-
+ Linux users having fun i guess...
+url: "https://linuxposting.xyz"
+defaults:
+ - scope:
+ path: ""
+ values:
+ layout: default
+ title: "linuxposting.xyz"
+ headline: "linuxposting.xyz"
+
+# Build settings
+plugins:
+ - jekyll-feed
+
+collections_dir: articles
+collections:
+ news:
+ output: true
+ permalink: /news/:path
+ announce:
+ output: true
+ permalink: /announcements/:path
+
+# Exclude from processing.
+# The following items will not be processed, by default.
+# Any item listed under the `exclude:` key here will be automatically added to
+# the internal "default list".
+#
+# Excluded items can be processed by explicitly listing the directories or
+# their entries' file path in the `include:` list.
+#
+# exclude:
+# - .sass-cache/
+# - .jekyll-cache/
+# - gemfiles/
+# - Gemfile
+# - Gemfile.lock
+# - node_modules/
+# - vendor/bundle/
+# - vendor/cache/
+# - vendor/gems/
+# - vendor/ruby/
diff --git a/website/_data/nav.yml b/website/_data/nav.yml
new file mode 100644
index 0000000..6374ef9
--- /dev/null
+++ b/website/_data/nav.yml
@@ -0,0 +1,14 @@
+- url: /
+ title: Home
+- url: "#"
+ title: About
+- url: "#"
+ title: Linuxposting News
+- url: "#"
+ title: Site Announcements
+- url: "/register"
+ title: Register for Accounts
+- url: "#"
+ title: View Molly's Page
+- url: "#"
+ title: Contact Us
\ No newline at end of file
diff --git a/website/_includes/sidenav.html b/website/_includes/sidenav.html
new file mode 100644
index 0000000..6a37dfc
--- /dev/null
+++ b/website/_includes/sidenav.html
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/website/_includes/toc.html b/website/_includes/toc.html
new file mode 100644
index 0000000..bc90d08
--- /dev/null
+++ b/website/_includes/toc.html
@@ -0,0 +1,189 @@
+{% capture tocWorkspace %}
+ {% comment %}
+ Copyright (c) 2017 Vladimir "allejo" Jimenez
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+ {% endcomment %}
+ {% comment %}
+ Version 1.2.1
+ https://github.com/allejo/jekyll-toc
+
+ "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
+
+ Usage:
+ {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
+
+ Parameters:
+ * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
+
+ Optional Parameters:
+ * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
+ * class (string) : '' - a CSS class assigned to the TOC
+ * id (string) : '' - an ID to assigned to the TOC
+ * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
+ * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
+ * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
+ * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
+ * submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level
+ * base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
+ * anchor_class (string) : '' - add custom class(es) for each anchor element
+ * skip_no_ids (bool) : false - skip headers that do not have an `id` attribute
+ * flat_toc (bool) : false - when set to true, the TOC will be a single level list
+
+ Output:
+ An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
+ generate the table of contents and will NOT output the markdown given to it
+ {% endcomment %}
+
+ {% capture newline %}
+ {% endcapture %}
+ {% assign newline = newline | rstrip %}
+
+ {% capture deprecation_warnings %}{% endcapture %}
+
+ {% if include.baseurl %}
+ {% capture deprecation_warnings %}{{ deprecation_warnings }}{{ newline }}{% endcapture %}
+ {% endif %}
+
+ {% if include.skipNoIDs %}
+ {% capture deprecation_warnings %}{{ deprecation_warnings }}{{ newline }}{% endcapture %}
+ {% endif %}
+
+ {% capture jekyll_toc %}{% endcapture %}
+ {% assign orderedList = include.ordered | default: false %}
+ {% assign flatToc = include.flat_toc | default: false %}
+ {% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
+ {% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
+ {% assign minHeader = include.h_min | default: 1 %}
+ {% assign maxHeader = include.h_max | default: 6 %}
+ {% assign nodes = include.html | strip | split: ' maxHeader %}
+ {% continue %}
+ {% endif %}
+
+ {% assign _workspace = node | split: ' ' | first }}>{% endcapture %}
+ {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
+
+ {% if include.item_class and include.item_class != blank %}
+ {% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %}
+ {% endif %}
+
+ {% if include.submenu_class and include.submenu_class != blank %}
+ {% assign subMenuLevel = currLevel | minus: 1 %}
+ {% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %}
+ {% endif %}
+
+ {% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
+
+ {% if htmlID %}
+ {% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %}
+
+ {% if include.anchor_class %}
+ {% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %}
+ {% endif %}
+
+ {% capture listItem %}{{ anchorBody }} {% endcapture %}
+ {% elsif skipNoIDs == true %}
+ {% continue %}
+ {% else %}
+ {% capture listItem %}{{ anchorBody }}{% endcapture %}
+ {% endif %}
+
+ {% if currLevel > lastLevel and flatToc == false %}
+ {% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
+ {% elsif currLevel < lastLevel and flatToc == false %}
+ {% assign repeatCount = lastLevel | minus: currLevel %}
+
+ {% for i in (1..repeatCount) %}
+ {% capture jekyll_toc %}{{ jekyll_toc }}{{ listModifier }}>{% endcapture %}
+ {% endfor %}
+
+ {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %}
+ {% else %}
+ {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %}
+ {% endif %}
+
+ {% capture jekyll_toc %}{{ jekyll_toc }}
{{ listItem }}{% endcapture %}
+
+ {% assign lastLevel = currLevel %}
+ {% assign firstHeader = false %}
+ {% endfor %}
+
+ {% if flatToc == true %}
+ {% assign repeatCount = 1 %}
+ {% else %}
+ {% assign repeatCount = minHeader | minus: 1 %}
+ {% assign repeatCount = lastLevel | minus: repeatCount %}
+ {% endif %}
+
+ {% for i in (1..repeatCount) %}
+ {% capture jekyll_toc %}{{ jekyll_toc }} {{ listModifier }}>{% endcapture %}
+ {% endfor %}
+
+ {% if jekyll_toc != '' %}
+ {% assign rootAttributes = '' %}
+ {% if include.class and include.class != blank %}
+ {% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %}
+ {% endif %}
+
+ {% if include.id and include.id != blank %}
+ {% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %}
+ {% endif %}
+
+ {% if rootAttributes %}
+ {% assign nodes = jekyll_toc | split: '>' %}
+ {% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %}
+ {% endif %}
+ {% endif %}
+{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc -}}
diff --git a/website/_layouts/default.html b/website/_layouts/default.html
new file mode 100644
index 0000000..31c2084
--- /dev/null
+++ b/website/_layouts/default.html
@@ -0,0 +1,123 @@
+
+
+
+
+
+ nya! {{ page.title }}
+
+
+
+
+
+
+
+
+
{{ page.headline }}
+
+ [[SEARCH BAR GOES HERE]]
+
+
+
+
+
+
+ {% comment %}
+ Sidenav is written in _includes/sidenav.html and
+ is configured in _data/nav.yml.
+ {% endcomment %}
+ {% include sidenav.html %}
+
+
+
+
+
+
+
+
Table of Contents
+ {% comment %}
+ Table of contents generated by https://github.com/allejo/jekyll-toc .
+ The file is included as toc.html in the _includes directory.
+ {% endcomment %}
+ {% include toc.html html=content %}
+
+
+
News
+
+ {% for article in site.news %}
+
+ {% else %}
+
+
No news articles available at the moment.
+
+ {% endfor %}
+
+
+
+
+
Announcements
+
+ {% for announcement in site.announce %}
+
+ {% else %}
+
+
No announcements available at the moment.
+
+ {% endfor %}
+
+
+
+
+
+ {{ content }}
+
+
+
+
\ No newline at end of file
diff --git a/website/articles/_announce/2025-07-16-test.md b/website/articles/_announce/2025-07-16-test.md
new file mode 100644
index 0000000..e160627
--- /dev/null
+++ b/website/articles/_announce/2025-07-16-test.md
@@ -0,0 +1,7 @@
+---
+title: ing
+headline: inesting
+description: intestine
+---
+
+# TEST yourself
\ No newline at end of file
diff --git a/website/articles/_news/2025-07-16-test.md b/website/articles/_news/2025-07-16-test.md
new file mode 100644
index 0000000..a3b5330
--- /dev/null
+++ b/website/articles/_news/2025-07-16-test.md
@@ -0,0 +1,7 @@
+---
+title: testing
+headline: nesting
+description: something abou tests
+---
+
+# TEST
\ No newline at end of file
diff --git a/website/articles/announce_feed.xml b/website/articles/announce_feed.xml
new file mode 100644
index 0000000..a5978ec
--- /dev/null
+++ b/website/articles/announce_feed.xml
@@ -0,0 +1,25 @@
+---
+layout: null
+permalink: /announcements/feed.xml
+---
+
+
+
+ linuxposting.xyz announcements
+ https://linuxposting.xyz/
+ announcements
+ 1440
+
+ en
+ Changes and updates to the services hosted by linuxposting.xyz
+ {% for announcement in site.announce %}
+ -
+
{{ announcement.title }}
+ {{ site.url }}{{ announcement.url }}
+ {{ announcement.description | strip_html | truncate: 200 }}
+ {{ announcement.date | date_to_xmlschema }}
+ {{ site.url }}{{ announcement.url }}
+
+ {% endfor %}
+
+
\ No newline at end of file
diff --git a/website/articles/news_feed.xml b/website/articles/news_feed.xml
new file mode 100644
index 0000000..70e4d57
--- /dev/null
+++ b/website/articles/news_feed.xml
@@ -0,0 +1,25 @@
+---
+layout: null
+permalink: /news/feed.xml
+---
+
+
+
+ linuxposting.xyz newsletter
+ https://linuxposting.xyz/
+ tech
+ 1440
+
+ en
+ The funny news articles linuxposting.xyz makes
+ {% for article in site.news %}
+ -
+
{{ article.title }}
+ {{ site.url }}{{ article.url }}
+ {{ article.description | strip_html | truncate: 200 }}
+ {{ article.date | date_to_xmlschema }}
+ {{ site.url }}{{ article.url }}
+
+ {% endfor %}
+
+
\ No newline at end of file
diff --git a/website/assets/css/main.css b/website/assets/css/main.css
new file mode 100644
index 0000000..3b9b813
--- /dev/null
+++ b/website/assets/css/main.css
@@ -0,0 +1,204 @@
+@import url(/assets/themes/colors.css);
+
+/* basics */
+html, body {
+ margin:0;
+ padding: 8px;
+
+ font-family: monospace;
+ font-size: 14px;
+ color:var(--t-color);
+ background-color: var(--bg-darkest);
+}
+h1, h2, h3, h4, h5 {
+ font-family: sans-serif;
+}
+h1 {
+ font-size: 2.5rem;
+}
+h2 {
+ font-size: 2rem;
+}
+h3 {
+ font-size: 1.75rem;
+}
+h4 {
+ font-size: 1.5rem;
+}
+h5 {
+ font-size: 1.25rem;
+}
+h6 {
+ font-size: 1rem;
+ text-transform: capitalize;
+}
+
+a {
+ color: var(--a-color);
+}
+::selection {
+ background-color: var(--s-color);
+}
+li {
+ margin-bottom: 24px;
+ justify-self: center;
+}
+
+/* parent container */
+.parent {
+ display: grid;
+
+
+ grid-template-columns: repeat(12, 1fr);
+ grid-template-rows: repeat(8, 1fr);
+ gap: 16px;
+
+
+ margin: auto;
+ height: max(calc(100vh - 32px), 700px); /* 8px top/bottom from body */
+}
+
+
+/* top nav */
+.nav-top {
+ grid-column: span 12 / span 12;
+ display:flex;
+ flex-direction: row;
+
+ padding-left: 8px;
+ padding-right: 8px;
+
+ justify-content: space-between;
+ align-items: center;
+ align-content: center;
+}
+
+/* main nav */
+.nav-main {
+ grid-column: span 2 / span 2;
+ grid-row: span 3 / span 3;
+ grid-row-start: 2;
+
+ display: flex;
+ flex-direction: column;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-items: center;
+ align-content: center;
+}
+.nav-main ul {
+ padding: 8px;
+}
+.nav-main li {
+ list-style: none;
+}
+.nav-icons {
+ grid-column: span 2 / span 2;
+ grid-row: span 2 / span 2;
+ grid-column-start: 1;
+ grid-row-start: 5;
+
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ grid-template-rows: repeat(2, 1fr);
+ gap: 4px;
+
+ justify-items: center;
+ align-items: center;
+}
+
+
+/* buttons of main nav */
+.button {
+ display: flex;
+ flex-direction: column;
+ align-self: center;
+ justify-self: center;
+}
+
+.button img {
+ aspect-ratio: 1/1;
+ max-width: 48px;
+ align-self: center;
+}
+
+.button p {
+ margin: 2px;
+ text-align: center;
+}
+
+
+/* content table */
+.content-table {
+ grid-column: span 2 / span 2;
+ grid-row: span 3 / span 3;
+ grid-column-start: 11;
+ grid-row-start: 2;
+ word-break: break-word;
+}
+
+
+/* news */
+.n-feed {
+ grid-column: span 2 / span 2;
+ grid-row: span 2 / span 2;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+}
+.news {
+ grid-row-start: 5;
+ grid-column-start: 11;
+}
+.announce {
+ grid-row-start: 7;
+ grid-column-start: 11;
+}
+
+.news-arts {
+ display: flex;
+ flex-direction: column;
+ overflow: scroll;
+ flex-grow: 2;
+}
+.news-item {
+ padding: 4px 16px;
+ margin: 2px;
+}
+.news-item h5 {
+ margin: 0;
+}
+.news-rss-subscribe {
+ align-self: flex-end;
+ padding: 4px 8px;
+ background-color: var(--fg-lighter); /* HACK: not a background color */
+ width: calc(100% - 16px);
+}
+.news-type-title {
+ font-weight: bold;
+ text-align: center;
+}
+
+/* main content */
+.content {
+ grid-column: span 8 / span 8;
+ grid-row: span 7 / span 7;
+ grid-column-start: 3;
+ grid-row-start: 2;
+
+ padding: 16px;
+}
+
+
+/* experimental stuff */
+.nav-main, .nav-icons, .nav-top, .content-table, .news, .content, .announce{
+background-color: var(--bg);
+ border: 1px solid var(--t-color);
+ border-radius:16px;
+}
+.nav-main, .nav-icons, .nav-top, .content-table, .news, .announce {
+ position: sticky;
+}
+.nav-main, .content-table, .content {
+ overflow-y: scroll;
+}
\ No newline at end of file
diff --git a/website/assets/img/icon.png b/website/assets/img/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..818d236f26729f0245b588f97d4222feb8084a83
GIT binary patch
literal 2248
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
literal 0
HcmV?d00001
diff --git a/website/assets/themes/colors.css b/website/assets/themes/colors.css
new file mode 100644
index 0000000..83396dc
--- /dev/null
+++ b/website/assets/themes/colors.css
@@ -0,0 +1,26 @@
+:root {
+
+ /* background colors */
+
+ --bg: #1e1e2e;
+ --bg-darker:#181825; /* background colors */
+ --bg-darkest:#11111b;
+
+ --fg:#313244;
+ --fg-lighter:#45475a; /* whatever is on top of the background */
+ --fg-lightest:#585b70;
+
+ --ov:#6c7086;
+ --ov-lighter:#7f849c; /* overlays */
+ --ov-lightest:#9399b2;
+
+
+ /* text colors */
+ --t-color:#cdd6f4; /* text color */
+ --h-color:#cdd6f4; /* headline color */
+ --sh-color:#7f849c; /* sub-headline color */
+ --a-color:#89b4fa; /* links */
+ --s-color:#9399b240; /* selections */
+
+ /* catppuccin mocha :3 */
+}
\ No newline at end of file
diff --git a/website/index.md b/website/index.md
new file mode 100644
index 0000000..1a6528f
--- /dev/null
+++ b/website/index.md
@@ -0,0 +1,7 @@
+---
+title: hello
+layout: default
+headline: stupid page
+---
+
+TODO: CONTENT
\ No newline at end of file
diff --git a/website/register.md b/website/register.md
new file mode 100644
index 0000000..f78d6c6
--- /dev/null
+++ b/website/register.md
@@ -0,0 +1,60 @@
+---
+title: Account Registration
+layout: default
+headline: Account Registration
+---
+
+### How to Register for accounts on linuxposting.xyz
+
+
+
+## Requisites
+
+In order to qualify for an account on any of our services, you must run a tech account. This is defined as an account that posts about tech, or a gimmick blog that impersonates a tech thing
+
+We consider "impersonating" to be having a handle pretending to be something, like "btrfs-unofficial", "steamos-official" or "definitely-zen-browser". In this case, we need to make sure no one else is already impersonating that thing, with some exceptions. We will mainly check tumblr and wafrn for this
+
+This tech account can be on another service, or it can be the account you're planning to open with us, but it needs to be public
+
+If you do qualify, you can ask for personal and/or tech accounts
+
+## Registration
+
+In order to register, please send us an email to account@linuxposting.xyz. We will save this address in order to contact you about your account(s). We also recommend you share a second email address with us, in case you lose access to the first one
+
+This is how we want you to share this data with us. You can duplicate keys if you want multiple accounts, or skip them if you don't want one. The arrows explain what each key is for. Feel free to copy and paste this
+
+> contact: email@example.com <-- second email that you can contact us from. for example, if you ever need to get a password reset
+> email: username
+> matrix: username
+> wafrn: email@example.com <-- email that you'll be registering with on w.linuxposting.xyz
+
+## Response
+
+We will try to respond within a week. If your registration was successful, we'll send you your login details
+
+It may be possible that you want to impersonate a thing, but there are already accounts impersonating it. In this case we will follow up with an email asking to be contacted by these accounts. This way we can confirm they're yours, or that you have their permission to create your accounts
+
+If an account for that thing does exist, but has been inactive for 6 months, we will allow you to create your accounts without need for verification
+
+If you have any issues or questions, you can contact us at support@linuxposting.xyz
+
+## Rexample
+
+Molly the Example Mouse [image of her] would like some accounts.
+
+She sends an email as follows:
+
+> FROM: molly@example.com TO: account@linuxposting.xyz
+> SUBJECT: Accounts
+> > hi, i'm molly and I'd like some accounts on your website please
+> >
+> > email: molly@linuxposting.xyz
+> > wafrn: molly-the-example-mouse
+> > wafrn: baloo-file-official
+> >
+> > thank you!
+
+It is then verified that she runs the @baloo-file-official tumblr account, and she recieves the accounts requested. Notice that she didn't add a contact field. This is because she didn't have another email.
+
+